[mapguide-commits] r9520 - in trunk/MgDev: . Common Common/CoordinateSystem Common/Foundation Common/Foundation/System Common/Geometry Common/Geometry/Buffer Common/Geometry/Spatial Common/MapGuideCommon/Controller Common/MapGuideCommon/MapLayer Common/MapGuideCommon/Services Common/MdfParser Common/PlatformBase/Services Common/PlatformBase/Services/PrintLayoutService Common/Renderers Common/Schema Common/Stylization Server/src/Core Server/src/Services/Feature Server/src/Services/Rendering Server/src/UnitTesting UnitTest/WebTier/MapAgent/MapAgentForms Web/src/HttpHandler Web/src/mapadmin Web/src/mapviewerjava Web/src/mapviewernet Web/src/mapviewerphp

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed May 29 09:21:42 PDT 2019


Author: jng
Date: 2019-05-29 09:21:42 -0700 (Wed, 29 May 2019)
New Revision: 9520

Added:
   trunk/MgDev/Common/Schema/ClassDefinition-4.0.0.xsd
   trunk/MgDev/Common/Schema/FeatureSchemaCollection-4.0.0.xsd
   trunk/MgDev/Common/Schema/GeometryInfo-4.0.0.xsd
   trunk/MgDev/Common/Schema/TransformedCoordinateCollection-4.0.0.xsd
   trunk/MgDev/Common/Schema/UnitOfMeasure-4.0.0.xsd
Removed:
   trunk/MgDev/Common/Schema/ClassDefinition-3.3.0.xsd
   trunk/MgDev/Common/Schema/FeatureSchemaCollection-3.3.0.xsd
   trunk/MgDev/Common/Schema/GeometryInfo-3.3.0.xsd
   trunk/MgDev/Common/Schema/TransformedCoordinateCollection-3.3.0.xsd
   trunk/MgDev/Common/Schema/UnitOfMeasure-3.3.0.xsd
Modified:
   trunk/MgDev/
   trunk/MgDev/CMakeLists.txt
   trunk/MgDev/Common/CoordinateSystem/CoordSysUtil.h
   trunk/MgDev/Common/Foundation/FoundationDefs.h
   trunk/MgDev/Common/Foundation/System/Resources.cpp
   trunk/MgDev/Common/Geometry/Buffer/FloatTransform.cpp
   trunk/MgDev/Common/Geometry/Buffer/MgBuffer.cpp
   trunk/MgDev/Common/Geometry/Geometry.h
   trunk/MgDev/Common/Geometry/GeometryCommon.h
   trunk/MgDev/Common/Geometry/GeometrySimplificationAlgorithmType.h
   trunk/MgDev/Common/Geometry/GeometrySimplifier.cpp
   trunk/MgDev/Common/Geometry/GeometrySimplifier.h
   trunk/MgDev/Common/Geometry/GeosUtil.cpp
   trunk/MgDev/Common/Geometry/PreparedGeometry.cpp
   trunk/MgDev/Common/Geometry/PreparedGeometry.h
   trunk/MgDev/Common/Geometry/Spatial/MathUtility.cpp
   trunk/MgDev/Common/Geometry/Spatial/MathUtility.h
   trunk/MgDev/Common/MapGuideCommon/Controller/HtmlController.cpp
   trunk/MgDev/Common/MapGuideCommon/MapLayer/Layer.cpp
   trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp
   trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h
   trunk/MgDev/Common/MapGuideCommon/Services/Metatile.h
   trunk/MgDev/Common/MapGuideCommon/Services/ProxyFeatureService.cpp
   trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
   trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h
   trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h
   trunk/MgDev/Common/MdfParser/IOElevationSettings.cpp
   trunk/MgDev/Common/MdfParser/IOStroke.cpp
   trunk/MgDev/Common/MdfParser/IOSymbol.cpp
   trunk/MgDev/Common/MdfParser/stdafx.h
   trunk/MgDev/Common/PlatformBase/Services/ClassDefinition.cpp
   trunk/MgDev/Common/PlatformBase/Services/FeatureSchemaCollection.cpp
   trunk/MgDev/Common/PlatformBase/Services/FeatureService.h
   trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutBase.cpp
   trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutElementBase.cpp
   trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutServiceBase.cpp
   trunk/MgDev/Common/ProductVersion.h
   trunk/MgDev/Common/Renderers/AGGImageIO.cpp
   trunk/MgDev/Common/Renderers/AGGRenderer.cpp
   trunk/MgDev/Common/Renderers/AGGW2DRewriter.cpp
   trunk/MgDev/Common/Renderers/DWFRenderer.cpp
   trunk/MgDev/Common/Renderers/GDRenderer.cpp
   trunk/MgDev/Common/Renderers/GDW2DRewriter.cpp
   trunk/MgDev/Common/Renderers/UTFGridRenderer.cpp
   trunk/MgDev/Common/Renderers/stdafx.h
   trunk/MgDev/Common/Stylization/Band.h
   trunk/MgDev/Common/Stylization/DefaultStylizer.cpp
   trunk/MgDev/Common/Stylization/GridColorHandler.cpp
   trunk/MgDev/Common/Stylization/GridColorThemeHandler.h
   trunk/MgDev/Common/Stylization/GridData.h
   trunk/MgDev/Common/Stylization/GridStyleColorHandler.h
   trunk/MgDev/Common/Stylization/GridStylizer.cpp
   trunk/MgDev/Common/Stylization/GridStylizer.h
   trunk/MgDev/Common/Stylization/GridThemeParser.cpp
   trunk/MgDev/Common/Stylization/LineBuffer.cpp
   trunk/MgDev/Common/Stylization/PointAdapter.cpp
   trunk/MgDev/Common/Stylization/PolygonAdapter.cpp
   trunk/MgDev/Common/Stylization/PolylineAdapter.cpp
   trunk/MgDev/Common/Stylization/SE_AreaPositioning.cpp
   trunk/MgDev/Common/Stylization/SE_LineRenderer.cpp
   trunk/MgDev/Common/Stylization/SE_PositioningAlgorithms.cpp
   trunk/MgDev/Common/Stylization/SE_Renderer.cpp
   trunk/MgDev/Common/Stylization/StylizationEngine.cpp
   trunk/MgDev/Common/Stylization/stdafx.h
   trunk/MgDev/Server/src/Core/Server.h
   trunk/MgDev/Server/src/Services/Feature/FeatureNumericFunctions.cpp
   trunk/MgDev/Server/src/Services/Feature/FeatureOperationFactory.cpp
   trunk/MgDev/Server/src/Services/Feature/ServerFeatureService.cpp
   trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestMisc.cpp
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/binaryoperationform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/boundaryform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/bufferform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/convexhullform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/cstransformcoordinatesform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/distanceform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/geometryinfoform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/simplifyform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/spatialpredicateform.html
   trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/tessellateform.html
   trunk/MgDev/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpCsTransformCoordinates.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpDescribeRuntimeMap.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpDescribeSchema.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoBinaryOperation.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoBoundary.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoBuffer.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoConvexHull.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoDistance.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoSimplify.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoSpatialPredicate.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeoTessellate.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGeometryInfo.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGetClassDefinition.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpQueryMapFeatures.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpRequestResponseHandler.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpSelectFeatures.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpSelectFeaturesSpatially.cpp
   trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp
   trunk/MgDev/Web/src/mapadmin/resizableadmin.php
   trunk/MgDev/Web/src/mapviewerjava/ajaxviewerabout.jsp
   trunk/MgDev/Web/src/mapviewernet/ajaxviewerabout.aspx
   trunk/MgDev/Web/src/mapviewerphp/ajaxviewerabout.php
   trunk/MgDev/configure.in
Log:
Merge v4 sandbox. This implements RFC 171 and RFC 172

Index: trunk/MgDev
===================================================================
--- trunk/MgDev	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev	2019-05-29 16:21:42 UTC (rev 9520)

Property changes on: trunk/MgDev
___________________________________________________________________
Modified: svn:mergeinfo
## -27,5 +27,6 ##
 /sandbox/jng/tiling_v2:9490-9509
 /sandbox/jng/utfgrid:9179-9212
 /sandbox/jng/v30:8212-8227
+/sandbox/jng/v4:9511-9519
 /sandbox/rfc94:5099-5163
 /trunk/MgDev:9397-9399
\ No newline at end of property
Modified: trunk/MgDev/CMakeLists.txt
===================================================================
--- trunk/MgDev/CMakeLists.txt	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/CMakeLists.txt	2019-05-29 16:21:42 UTC (rev 9520)
@@ -60,8 +60,8 @@
 include(CheckSymbolExists)
 include(ExternalProject)
 
-set(MG_VERSION_MAJOR 3)
-set(MG_VERSION_MINOR 3)
+set(MG_VERSION_MAJOR 4)
+set(MG_VERSION_MINOR 0)
 set(MG_VERSION_RELEASE 0)
 if (NOT MG_VERSION_REV)
     set(MG_VERSION_REV 0)
@@ -202,7 +202,18 @@
     execute_process(COMMAND ln -sf ${target} ${CMAKE_CURRENT_BINARY_DIR}/${linkname})
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${linkname} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${component})
 endmacro(install_symlink)
+macro(use_cxx11)
+  if (CMAKE_VERSION VERSION_LESS "3.1")
+    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
+    endif ()
+  else ()
+    set (CMAKE_CXX_STANDARD 11)
+  endif ()
+endmacro(use_cxx11)
 
+use_cxx11()
+
 # See if Xerces typedefs XMLCh to char16_t
 # This would be the case on Ubuntu 18.04 for its version of xerces-c (3.2.0)
 check_cxx_source_compiles(

Modified: trunk/MgDev/Common/CoordinateSystem/CoordSysUtil.h
===================================================================
--- trunk/MgDev/Common/CoordinateSystem/CoordSysUtil.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/CoordinateSystem/CoordSysUtil.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -47,13 +47,6 @@
 // Represent NAN for double
 #define DoubleNan std::numeric_limits<double>::quiet_NaN()
 
-// Checks whether value is NAN or not
-#ifdef _WIN32
-#define IsDoubleNan(x)  _isnan(x)
-#else
-#define IsDoubleNan(x)  isnan(x)
-#endif
-
 #ifndef _WIN32
 #define wmemcpy memcpy
 #endif

Modified: trunk/MgDev/Common/Foundation/FoundationDefs.h
===================================================================
--- trunk/MgDev/Common/Foundation/FoundationDefs.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Foundation/FoundationDefs.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -39,7 +39,6 @@
     #define _stricmp  strcasecmp
     #define _strnicmp strncasecmp
 
-    #define _isnan    isnan
     #define _finite   finite
 #endif
 

Modified: trunk/MgDev/Common/Foundation/System/Resources.cpp
===================================================================
--- trunk/MgDev/Common/Foundation/System/Resources.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Foundation/System/Resources.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -38,8 +38,8 @@
 const STRING MgResources::ServerShuttingDown            = L"Server shutting down...";
 const STRING MgResources::ServerStarted                 = L"Server started.";
 const STRING MgResources::ServerStopped                 = L"Server stopped.";
-const STRING MgResources::ServerServiceName             = L"MapGuideServer3.3"; // Do not translate
-const STRING MgResources::ServerServiceDisplayName      = L"MapGuide Server v3.3"; // Do not translate
+const STRING MgResources::ServerServiceName             = L"MapGuideServer4.0"; // Do not translate
+const STRING MgResources::ServerServiceDisplayName      = L"MapGuide Server v4.0"; // Do not translate
 const STRING MgResources::ServerServiceDescription      = L"The MapGuide Server process.";
 const STRING MgResources::UsingDefaultResourceFile      = L"Defaulting to the \"en\" resource file.";
 const STRING MgResources::RegisteredLicenseDetected     = L"Registered license detected...";

Modified: trunk/MgDev/Common/Geometry/Buffer/FloatTransform.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/Buffer/FloatTransform.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/Buffer/FloatTransform.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -55,7 +55,7 @@
     if ( doubleExtent.Height() != 0.0)
         aspect = doubleExtent.Width() / doubleExtent.Height();
 
-    if ( IsDoubleNan( aspect ) )
+    if ( std::isnan( aspect ) )
         aspect = 1.0;
 
     if (aspect >= 1.0)

Modified: trunk/MgDev/Common/Geometry/Buffer/MgBuffer.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/Buffer/MgBuffer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/Buffer/MgBuffer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -77,7 +77,7 @@
 MgGeometryCollection* MgBuffer::CreateBuffer(MgGeometryCollection* geometries, double offset, bool merge)
 {
     //  check parameters
-    if ( geometries == NULL || IsDoubleNan( offset ) || fabs(offset) > DoubleMaxValue )
+    if ( geometries == NULL || std::isnan( offset ) || fabs(offset) > DoubleMaxValue )
         return NULL;
 
     Ptr<MgGeometryCollection> geomCol;

Modified: trunk/MgDev/Common/Geometry/Geometry.h
===================================================================
--- trunk/MgDev/Common/Geometry/Geometry.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/Geometry.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -750,7 +750,7 @@
     /// virtual MgGeometry Prepare();
     /// \htmlinclude SyntaxBottom.html
     ///
-    /// \since 3.3
+    /// \since 4.0
     ///
     /// \return
     /// An MgPreparedGeometry representing the prepared version of this geometry
@@ -775,7 +775,7 @@
     /// virtual MgGeometry Prepare();
     /// \htmlinclude SyntaxBottom.html
     ///
-    /// \since 3.3
+    /// \since 4.0
     ///
     /// \return
     /// A tesellated version of this geometry. If this geometry is not curve-based, the operation does nothing and this method returns itself.

Modified: trunk/MgDev/Common/Geometry/GeometryCommon.h
===================================================================
--- trunk/MgDev/Common/Geometry/GeometryCommon.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/GeometryCommon.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -183,13 +183,6 @@
 // Represent NAN for double
 #define DoubleNan std::numeric_limits<double>::quiet_NaN()
 
-// Checks whether value is NAN or not
-#ifdef _WIN32
-#define IsDoubleNan(x)  _isnan(x)
-#else
-#define IsDoubleNan(x)  isnan(x)
-#endif
-
 #define GEOMETRY_SEP    " "
 #define POINT_SEPARATOR L", "
 

Modified: trunk/MgDev/Common/Geometry/GeometrySimplificationAlgorithmType.h
===================================================================
--- trunk/MgDev/Common/Geometry/GeometrySimplificationAlgorithmType.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/GeometrySimplificationAlgorithmType.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -28,6 +28,7 @@
 /// the various simplification algorithms available for simplifying
 /// geometry instances
 ///
+/// \since 4.0
 class MgGeometrySimplificationAlgorithmType
 {
 PUBLISHED_API:

Modified: trunk/MgDev/Common/Geometry/GeometrySimplifier.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/GeometrySimplifier.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/GeometrySimplifier.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -33,8 +33,8 @@
 MgGeometry* MgGeometrySimplifier::Simplify(MgGeometry* geom, double tolerance, INT32 algorithm)
 {
     Ptr<MgGeometry> simplified;
-    std::auto_ptr<Geometry> gInput;
-    std::auto_ptr<Geometry> gOutput;
+    std::unique_ptr<Geometry> gInput;
+    std::unique_ptr<Geometry> gOutput;
     MG_GEOMETRY_TRY()
 
     CHECKARGUMENTNULL(geom, L"MgGeometrySimplifier.Simplify");

Modified: trunk/MgDev/Common/Geometry/GeometrySimplifier.h
===================================================================
--- trunk/MgDev/Common/Geometry/GeometrySimplifier.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/GeometrySimplifier.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -60,6 +60,7 @@
 /// \endcode
 /// \htmlinclude ExampleBottom.html
 ///
+/// \since 4.0
 class MG_GEOMETRY_API MgGeometrySimplifier : public MgGuardDisposable
 {
     DECLARE_CLASSNAME(MgGeometrySimplifier)

Modified: trunk/MgDev/Common/Geometry/GeosUtil.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/GeosUtil.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/GeosUtil.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -107,8 +107,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     contains = g1->contains(g2.get());
 
@@ -131,8 +131,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     intersects = g1->intersects(g2.get());
 
@@ -155,8 +155,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     crosses = g1->crosses(g2.get());
 
@@ -179,8 +179,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     disjoint = g1->disjoint(g2.get());
 
@@ -203,8 +203,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     equals = g1->equals(g2.get());
 
@@ -227,8 +227,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     overlaps = g1->overlaps(g2.get());
 
@@ -251,8 +251,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     touches = g1->touches(g2.get());
 
@@ -275,8 +275,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     within = g1->within(g2.get());
 
@@ -296,8 +296,8 @@
     Ptr<MgGeometry> tGeom1 = MgSpatialUtility::TesselateCurve(geom1);
     STRING wktGeom1 = tGeom1->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g3(g1->getBoundary());
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g3(g1->getBoundary());
 
     WKTWriter writer;
     string bndWkt = writer.write(g3.get());
@@ -324,8 +324,8 @@
     Ptr<MgGeometry> tGeom1 = MgSpatialUtility::TesselateCurve(geom1);
     STRING wktGeom1 = tGeom1->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g3(g1->convexHull());
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g3(g1->convexHull());
 
     WKTWriter writer;
     string convexHullWkt = writer.write(g3.get());
@@ -355,9 +355,9 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
-    std::auto_ptr<Geometry> g3(g1->difference(g2.get()));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g3(g1->difference(g2.get()));
 
     WKTWriter writer;
     string differenceWkt = writer.write(g3.get());
@@ -388,8 +388,8 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
 
     distance = g1->distance(g2.get());
 
@@ -412,9 +412,9 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
-    std::auto_ptr<Geometry> g3(g1->intersection(g2.get()));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g3(g1->intersection(g2.get()));
 
     WKTWriter writer;
     string intersectionWkt = writer.write(g3.get());
@@ -444,9 +444,9 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
-    std::auto_ptr<Geometry> g3(g1->symDifference(g2.get()));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g3(g1->symDifference(g2.get()));
 
     WKTWriter writer;
     string symetricDifferenceWkt = writer.write(g3.get());
@@ -476,9 +476,9 @@
     STRING wktGeom1 = tGeom1->ToAwkt(true);
     STRING wktGeom2 = tGeom2->ToAwkt(true);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Geometry> g2(r.Read(wktGeom2));
-    std::auto_ptr<Geometry> g3(g1->Union(g2.get()));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g2(r.Read(wktGeom2));
+    std::unique_ptr<Geometry> g3(g1->Union(g2.get()));
 
     WKTWriter writer;
     string unionGeomWkt = writer.write(g3.get());
@@ -504,7 +504,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     isValid = g1->isValid();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.IsValid")
@@ -522,7 +522,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     isSimple = g1->isSimple();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.IsSimple")
@@ -540,7 +540,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     isEmpty = g1->isEmpty();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.IsEmpty")
@@ -558,7 +558,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     //isClosed = g1->isClosed();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.IsClosed")
@@ -576,7 +576,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     area = g1->getArea();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.Area")
@@ -594,7 +594,7 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
     length = g1->getLength();
 
     MG_GEOMETRY_CATCH_AND_THROW(L"MgGeosUtil.Length")
@@ -612,8 +612,8 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Point> g2(g1->getCentroid());
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Point> g2(g1->getCentroid());
 
     double x = g2->getX();
     double y = g2->getY();
@@ -637,8 +637,8 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Point> g2(g1->getInteriorPoint());
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Point> g2(g1->getInteriorPoint());
 
     double x = g2->getX();
     double y = g2->getY();
@@ -662,8 +662,8 @@
 
     STRING wktGeom1 = ToAwkt(geom1);
 
-    std::auto_ptr<Geometry> g1(r.Read(wktGeom1));
-    std::auto_ptr<Point> g2(g1->getInteriorPoint());
+    std::unique_ptr<Geometry> g1(r.Read(wktGeom1));
+    std::unique_ptr<Point> g2(g1->getInteriorPoint());
 
     double x = g2->getX();
     double y = g2->getY();

Modified: trunk/MgDev/Common/Geometry/PreparedGeometry.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/PreparedGeometry.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/PreparedGeometry.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -30,7 +30,7 @@
     PreparedGeometryImpl() 
       : m_pg(NULL), 
         m_pm(new PrecisionModel()), 
-        m_geom(NULL)
+        m_geom(nullptr)
     {
         m_gf = GeometryFactory::create(m_pm.get(), 10);
     }
@@ -38,8 +38,8 @@
     PreparedGeometryImpl() 
       : m_pg(NULL), 
         m_pm(new PrecisionModel()), 
-        m_gf(NULL),
-        m_geom(NULL)
+        m_gf(nullptr),
+        m_geom(nullptr)
     {
         m_gf.reset(new GeometryFactory(m_pm.get(), 10));
     }
@@ -69,13 +69,13 @@
     const PreparedGeometry* m_pg;
 
 private:
-    std::auto_ptr<Geometry> m_geom;
-    std::auto_ptr<PrecisionModel> m_pm;
+    std::unique_ptr<Geometry> m_geom;
+    std::unique_ptr<PrecisionModel> m_pm;
 // GEOS 3.6.0 onwards changes the C++ API around GeometryFactory
 #if (GEOS_VERSION_MAJOR == 3) && (GEOS_VERSION_MINOR >= 6)
     GeometryFactory::unique_ptr m_gf;
 #else
-    std::auto_ptr<GeometryFactory> m_gf;
+    std::unique_ptr<GeometryFactory> m_gf;
 #endif
 };
 
@@ -108,43 +108,43 @@
 
 bool MgPreparedGeometry::Contains(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->contains(gOther.get());
 }
 
 bool MgPreparedGeometry::Crosses(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->crosses(gOther.get());
 }
 
 bool MgPreparedGeometry::Disjoint(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->disjoint(gOther.get());
 }
 
 bool MgPreparedGeometry::Intersects(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->intersects(gOther.get());
 }
 
 bool MgPreparedGeometry::Overlaps(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->overlaps(gOther.get());
 }
 
 bool MgPreparedGeometry::Touches(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->touches(gOther.get());
 }
 
 bool MgPreparedGeometry::Within(MgGeometry * other)
 {
-    std::auto_ptr<Geometry> gOther(d_ptr->Convert(other));
+    std::unique_ptr<Geometry> gOther(d_ptr->Convert(other));
     return d_ptr->m_pg->within(gOther.get());
 }
 

Modified: trunk/MgDev/Common/Geometry/PreparedGeometry.h
===================================================================
--- trunk/MgDev/Common/Geometry/PreparedGeometry.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/PreparedGeometry.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -18,6 +18,8 @@
 #ifndef _MGPREPAREDGEOMETRY_H_
 #define _MGPREPAREDGEOMETRY_H_
 
+#include <memory>
+
 class MgGeometry;
 
 ////////////////////////////////////////////////////////////////
@@ -284,7 +286,7 @@
 
 private:
     class PreparedGeometryImpl;
-    std::auto_ptr<PreparedGeometryImpl> d_ptr;
+    std::unique_ptr<PreparedGeometryImpl> d_ptr;
     MgPreparedGeometry(PreparedGeometryImpl* impl);
 
 protected:

Modified: trunk/MgDev/Common/Geometry/Spatial/MathUtility.cpp
===================================================================
--- trunk/MgDev/Common/Geometry/Spatial/MathUtility.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/Spatial/MathUtility.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -17,6 +17,7 @@
 
 #include "Foundation.h"
 #include "MathUtility.h"
+#include <cmath>
 
 using namespace std;
 
@@ -35,11 +36,7 @@
 
 bool MgMathUtility::IsNan(double n)
 {
-#ifdef _WIN32
-    return _isnan(n);
-#else
-    return isnan(n);
-#endif
+    return std::isnan(n);
 }
 
 

Modified: trunk/MgDev/Common/Geometry/Spatial/MathUtility.h
===================================================================
--- trunk/MgDev/Common/Geometry/Spatial/MathUtility.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Geometry/Spatial/MathUtility.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -19,7 +19,6 @@
 #define MgMathUtility_H
 
 #include <limits>       // For quiet_NaN()
-#include <float.h>      // For _isnan()
 #ifdef _WIN32
 // For M_PI in math.h on Windows (doesn't seem to work though).
 #define _USE_MATH_DEFINES

Modified: trunk/MgDev/Common/MapGuideCommon/Controller/HtmlController.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Controller/HtmlController.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Controller/HtmlController.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -486,7 +486,7 @@
             Ptr<MgStringCollection> propNames = new MgStringCollection();
             DisplayNameMap displayNameMap;
             //We need the property mappings of the source layer definition to compile our layer metadata
-            std::auto_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resourceService, layerId));
+            std::unique_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resourceService, layerId));
             if (ldf.get() != NULL)
             {
                 MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());

Modified: trunk/MgDev/Common/MapGuideCommon/MapLayer/Layer.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/MapLayer/Layer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/MapLayer/Layer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -590,7 +590,7 @@
     MG_TRY()
 
     Ptr<MgResourceService> resSvc = dynamic_cast<MgResourceService*>(GetMap()->GetService(MgServiceType::ResourceService));
-    std::auto_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
+    std::unique_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
     if (ldf.get() != NULL)
     {
         MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());
@@ -651,7 +651,7 @@
     INT32 ret = -1;
 
     Ptr<MgResourceService> resSvc = dynamic_cast<MgResourceService*>(GetMap()->GetService(MgServiceType::ResourceService));
-    std::auto_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
+    std::unique_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
     if (ldf.get() != NULL)
     {
         MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());
@@ -713,7 +713,7 @@
     INT32 ret = -1;
 
     Ptr<MgResourceService> resSvc = dynamic_cast<MgResourceService*>(GetMap()->GetService(MgServiceType::ResourceService));
-    std::auto_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
+    std::unique_ptr<MdfModel::LayerDefinition> ldf(MgLayerBase::GetLayerDefinition(resSvc, m_definition));
     if (ldf.get() != NULL)
     {
         MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());

Modified: trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -183,8 +183,8 @@
     }
 
     // build the runtime map object from the parsed definition
-    std::auto_ptr<MdfModel::TileSetDefinition> tdef;
-    std::auto_ptr<MdfModel::MapDefinition> mdef(parser.DetachMapDefinition());
+    std::unique_ptr<MdfModel::TileSetDefinition> tdef;
+    std::unique_ptr<MdfModel::MapDefinition> mdef(parser.DetachMapDefinition());
     assert(mdef.get() != NULL);
 
     MgGeometryFactory gf;
@@ -619,7 +619,7 @@
     }
 
     // build the runtime map object from the parsed definition
-    std::auto_ptr<MdfModel::TileSetDefinition> tdef(parser.DetachTileSetDefinition());
+    std::unique_ptr<MdfModel::TileSetDefinition> tdef(parser.DetachTileSetDefinition());
     assert(tdef.get() != NULL);
 
     MgGeometryFactory gf;

Modified: trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/MapLayer/Map.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -392,7 +392,7 @@
     /// \param dpi
     /// The display DPI to initially set for the map
     ///
-    /// \since 3.3
+    /// \since 4.0
     ///
     /// \return
     /// Returns nothing.

Modified: trunk/MgDev/Common/MapGuideCommon/Services/Metatile.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/Metatile.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Services/Metatile.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -24,7 +24,7 @@
 /// Defines a raw image frame buffer from the result of a meta-tile
 /// rendering operation
 ///
-/// \since 3.3
+/// \since 4.0
 class MG_MAPGUIDE_API MgMetatile : public MgSerializable
 {
     MG_DECL_DYNCREATE()

Modified: trunk/MgDev/Common/MapGuideCommon/Services/ProxyFeatureService.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/ProxyFeatureService.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Services/ProxyFeatureService.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1486,7 +1486,7 @@
                        MgFeatureServiceOpId::GetWfsReader_Id,       // Command Code
                        6,                                           // No of arguments
                        Feature_Service,                             // Service Id
-                       BUILD_VERSION(3,3,0),                        // Operation version
+                       BUILD_VERSION(4,0,0),                        // Operation version
                        MgCommand::knObject, featureSourceId,        // Argument#1
                        MgCommand::knString, &featureClass,          // Argument#2
                        MgCommand::knObject, requiredProperties,     // Argument#3

Modified: trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -156,7 +156,7 @@
         MgRenderingServiceOpId::RenderTile2,            // Command Code
         9,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, tileColumn,                 // Argument#3
@@ -242,7 +242,7 @@
         MgRenderingServiceOpId::RenderTileXYZ2,         // Command Code
         8,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, x,                          // Argument#3
@@ -266,7 +266,7 @@
         MgRenderingServiceOpId::RenderTileUTFGrid,      // Command Code
         7,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, x,                          // Argument#3
@@ -1181,7 +1181,7 @@
         MgRenderingServiceOpId::QueryFeatureProperties3,// Command Code
         9,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knObject, layerNames,                // Argument#2
         MgCommand::knObject, filterGeometry,            // Argument#3
@@ -1352,7 +1352,7 @@
         MgRenderingServiceOpId::RenderMetatile,         // Command Code
         10,                                             // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, tileColumn,                 // Argument#3
@@ -1387,7 +1387,7 @@
         MgRenderingServiceOpId::RenderTileXYZ2,         // Command Code
         9,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knString, &baseMapLayerGroupName,    // Argument#2
         MgCommand::knInt32, x,                          // Argument#3
@@ -1417,7 +1417,7 @@
         MgRenderingServiceOpId::RenderTileFromMetaTile, // Command Code
         9,                                              // No of arguments
         Rendering_Service,                              // Service Id
-        BUILD_VERSION(3, 3, 0),                         // Operation version
+        BUILD_VERSION(4,0,0),                         // Operation version
         MgCommand::knObject, map,                       // Argument#1
         MgCommand::knObject, metaTile,                  // Argument#2
         MgCommand::knString, &rendererName,             // Argument#3

Modified: trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Services/ProxyRenderingService.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -148,6 +148,7 @@
     /// \return
     /// A byte reader containing the rendered tile image.
     ///
+    /// \since 4.0
     virtual MgByteReader* RenderTile(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -266,6 +267,7 @@
     /// \return
     /// A byte reader containing the rendered tile image.
     ///
+    /// \since 4.0
     virtual MgByteReader* RenderTileXYZ(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1154,7 +1156,7 @@
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
     /// originally requested size.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgMetatile* RenderMetatile(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1209,7 +1211,7 @@
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
     /// originally requested size.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgMetatile* RenderMetatileXYZ(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1244,7 +1246,7 @@
     /// \return
     /// The requested sub-tile
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgByteReader* RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, CREFSTRING rendererName, INT32 subTileX, INT32 subTileY);
 
 protected:

Modified: trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MapGuideCommon/Services/RenderingService.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -162,7 +162,7 @@
     /// \return
     /// A byte reader containing the rendered tile image.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgByteReader* RenderTile(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -282,6 +282,7 @@
     /// \return
     /// A byte reader containing the rendered tile image.
     ///
+    /// \since 4.0
     virtual MgByteReader* RenderTileXYZ(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -323,7 +324,7 @@
     /// \return
     /// A byte reader containing the rendered tile image.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgByteReader* RenderTileUTFGrid(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1106,6 +1107,7 @@
     /// An MgSelection instance identifying the features that meet the
     /// selection criteria. Returns null if no features are identified.
     ///
+    /// \since 4.0
     virtual MgBatchPropertyCollection* QueryFeatureProperties(
         MgMap* map,
         MgStringCollection* layerNames,
@@ -1169,7 +1171,7 @@
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
     /// originally requested size.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgMetatile* RenderMetatile(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1224,7 +1226,7 @@
     /// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
     /// originally requested size.
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgMetatile* RenderMetatileXYZ(
         MgMap* map,
         CREFSTRING baseMapLayerGroupName,
@@ -1260,7 +1262,7 @@
     /// \return
     /// The requested sub-tile
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgByteReader* RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, CREFSTRING rendererName, INT32 subTileX, INT32 subTileY) = 0;
 
 protected:

Modified: trunk/MgDev/Common/MdfParser/IOElevationSettings.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOElevationSettings.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MdfParser/IOElevationSettings.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -146,7 +146,7 @@
 
     // Property: Unit
     fd << tab.tab() << startStr(sUnit);
-    std::auto_ptr<MdfString> str(LengthConverter::UnitToEnglish(elevationSettings->GetUnit()));
+    std::unique_ptr<MdfString> str(LengthConverter::UnitToEnglish(elevationSettings->GetUnit()));
     fd << EncodeString(*str);
     fd << endStr(sUnit) << std::endl;
 

Modified: trunk/MgDev/Common/MdfParser/IOStroke.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOStroke.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MdfParser/IOStroke.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -155,7 +155,7 @@
 
     // Property: Unit
     fd << tab.tab() << startStr(sUnit);
-    std::auto_ptr<MdfString> str(LengthConverter::UnitToEnglish(stroke->GetUnit()));
+    std::unique_ptr<MdfString> str(LengthConverter::UnitToEnglish(stroke->GetUnit()));
     fd << EncodeString(*str);
     fd << endStr(sUnit) << std::endl;
 

Modified: trunk/MgDev/Common/MdfParser/IOSymbol.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOSymbol.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MdfParser/IOSymbol.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -68,7 +68,7 @@
 {
     // Property: Unit
     fd << tab.tab() << "<Unit>"; // NOXLATE
-    std::auto_ptr<MdfString> str(LengthConverter::UnitToEnglish(symbol->GetUnit()));
+    std::unique_ptr<MdfString> str(LengthConverter::UnitToEnglish(symbol->GetUnit()));
     fd << EncodeString(*str);
     fd << "</Unit>" << std::endl; // NOXLATE
 

Modified: trunk/MgDev/Common/MdfParser/stdafx.h
===================================================================
--- trunk/MgDev/Common/MdfParser/stdafx.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/MdfParser/stdafx.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -18,6 +18,8 @@
 #ifndef _STDAFX_H
 #define _STDAFX_H
 
+#include <memory>
+
 #ifdef _WIN32
 
 // Exclude rarely-used stuff from Windows headers.
@@ -37,8 +39,6 @@
 #define _wcsnicmp wcsncasecmp
 #define _wcsicmp wcscasecmp
 
-#include <memory>
-
 #endif //_WIN32
 
 // Xerces includes

Modified: trunk/MgDev/Common/PlatformBase/Services/ClassDefinition.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/ClassDefinition.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/ClassDefinition.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -249,7 +249,7 @@
     if (includeProlog) 
     {
         xml = L"<?xml version=\"1.0\" encoding=\"utf-8\"?>";
-        xml.append(L"<ClassDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"ClassDefinition-3.3.0.xsd\">");
+        xml.append(L"<ClassDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"ClassDefinition-4.0.0.xsd\">");
     }
     else 
     {

Modified: trunk/MgDev/Common/PlatformBase/Services/FeatureSchemaCollection.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/FeatureSchemaCollection.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/FeatureSchemaCollection.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -203,7 +203,7 @@
 void MgFeatureSchemaCollection::ToSimpleXml(std::string & str)
 {
     str = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
-    str.append("<FeatureSchemaCollection xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"FeatureSchemaCollection-3.3.0.xsd\">");
+    str.append("<FeatureSchemaCollection xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"FeatureSchemaCollection-4.0.0.xsd\">");
 
     INT32 fcount = GetCount();
     for (INT32 i = 0; i < fcount; i++)

Modified: trunk/MgDev/Common/PlatformBase/Services/FeatureService.h
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/FeatureService.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/FeatureService.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -2084,7 +2084,7 @@
     ///
     /// \exception MgInvalidArgumentException
     ///
-    /// \since 3.3
+    /// \since 4.0
     virtual MgFeatureReader* GetWfsReader(MgResourceIdentifier* featureSourceId,
                                           CREFSTRING featureClass,
                                           MgStringCollection* requiredProperties,

Modified: trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutBase.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutBase.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutBase.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -255,7 +255,7 @@
     }
 
     // Populate the data.
-    std::auto_ptr<MdfModel::PrintLayoutDefinition> layoutDef(parser.DetachPrintLayoutDefinition());
+    std::unique_ptr<MdfModel::PrintLayoutDefinition> layoutDef(parser.DetachPrintLayoutDefinition());
     PopulateFromResource(printLayoutService, resourceService, layoutDef.get());
 }
 

Modified: trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutElementBase.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutElementBase.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutElementBase.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -443,7 +443,7 @@
     }
 
     // Populate the data.
-    std::auto_ptr<MdfModel::PrintLayoutElementDefinition> elementDef(parser.DetachPrintLayoutElementDefinition());
+    std::unique_ptr<MdfModel::PrintLayoutElementDefinition> elementDef(parser.DetachPrintLayoutElementDefinition());
     PopulateFromResource(elementDef.get());
 }
 

Modified: trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutServiceBase.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutServiceBase.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/PlatformBase/Services/PrintLayoutService/PrintLayoutServiceBase.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -76,7 +76,7 @@
     if (parser.GetSucceeded())
     {
         // Attempt to get a pointer to the print layout element definition
-        std::auto_ptr<PrintLayoutElementDefinition> elementDef(parser.DetachPrintLayoutElementDefinition());
+        std::unique_ptr<PrintLayoutElementDefinition> elementDef(parser.DetachPrintLayoutElementDefinition());
         if (elementDef.get() != NULL)
         {
             STRING defType = elementDef->GetType();

Modified: trunk/MgDev/Common/ProductVersion.h
===================================================================
--- trunk/MgDev/Common/ProductVersion.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/ProductVersion.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -18,7 +18,7 @@
 #ifndef PRODUCTVERSION_H_
 #define PRODUCTVERSION_H_
 
-const STRING ProductVersion = L"3.3.0.0";
-const STRING ApiVersion     = L"3.3";  // Major.Minor only
+const STRING ProductVersion = L"4.0.0.0";
+const STRING ApiVersion     = L"4.0";  // Major.Minor only
 
 #endif // PRODUCTVERSION_H_

Modified: trunk/MgDev/Common/Renderers/AGGImageIO.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/AGGImageIO.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/AGGImageIO.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1258,7 +1258,7 @@
             else if (format == L"JPG")  // MgImageFormats::Jpeg
                 data = (unsigned char*)gdImageJpegPtr(gdimg24, &size, 75);
 
-            std::auto_ptr<RS_ByteData> byteData;
+            std::unique_ptr<RS_ByteData> byteData;
             byteData.reset((NULL == data)? NULL : new RS_ByteData(data, size));
 
             gdFree(data);

Modified: trunk/MgDev/Common/Renderers/AGGRenderer.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/AGGRenderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/AGGRenderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -454,7 +454,7 @@
         return;
 
     LineBuffer* workbuffer = lb;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -561,7 +561,7 @@
         return;
 
     LineBuffer* workbuffer = lb;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -967,7 +967,7 @@
                 // transform to coordinates of temporary image where we
                 // draw symbol before transfering to the map
                 LineBuffer* lb = LineBufferPool::NewLineBuffer(m_pPool, 8);
-                std::auto_ptr<LineBuffer> spLB(lb);
+                std::unique_ptr<LineBuffer> spLB(lb);
 
                 double tempx, tempy;
                 for (int i=0; i<npts; ++i)
@@ -1239,7 +1239,7 @@
 
     // create the destination line buffer
     LineBuffer* destLB = LineBufferPool::NewLineBuffer(m_pPool, 8);
-    std::auto_ptr<LineBuffer> spDestLB(destLB);
+    std::unique_ptr<LineBuffer> spDestLB(destLB);
 
     // special code for Fenceline1 style
     int numCapSegs = 0;
@@ -1894,7 +1894,7 @@
 void AGGRenderer::ProcessLine(SE_ApplyContext* ctx, SE_RenderLineStyle* style)
 {
     LineBuffer* featGeom = ctx->geometry;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -1927,7 +1927,7 @@
 void AGGRenderer::ProcessArea(SE_ApplyContext* ctx, SE_RenderAreaStyle* style)
 {
     LineBuffer* featGeom = ctx->geometry;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     // can't apply an area style to point and linestring geometry types
     switch (featGeom->geom_type())
@@ -3064,7 +3064,7 @@
     WT_Matrix xform = file.desired_rendition().drawing_info().units().dwf_to_application_adjoint_transform();
 
     LineBuffer* lb = LineBufferPool::NewLineBuffer(m_pPool, numpts);
-    std::auto_ptr<LineBuffer> spLB(lb);
+    std::unique_ptr<LineBuffer> spLB(lb);
     lb->Reset();
 
     //

Modified: trunk/MgDev/Common/Renderers/AGGW2DRewriter.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/AGGW2DRewriter.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/AGGW2DRewriter.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -167,7 +167,7 @@
     int totalPts = contourSet.total_points();
 
     LineBuffer* dst_cntr = rewriter->ProcessW2DPoints(file, (WT_Logical_Point*)contourSet.points(), totalPts, true);
-    std::auto_ptr<LineBuffer> spDstLB(dst_cntr);
+    std::unique_ptr<LineBuffer> spDstLB(dst_cntr);
 
     if (dst_cntr)
     {
@@ -174,7 +174,7 @@
         //construct a line buffer with the transformed points and the original
         //contour information
         LineBuffer* lb = LineBufferPool::NewLineBuffer(rewriter->GetBufferPool(), totalPts);
-        std::auto_ptr<LineBuffer> spLB(lb);
+        std::unique_ptr<LineBuffer> spLB(lb);
         int index = 0;
         for (int i=0; i<numcntrs; i++)
         {
@@ -262,7 +262,7 @@
     endpts[3].m_y = bounds.m_max.m_y;
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, endpts, 4, false);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     unsigned int* src = NULL;
 
@@ -373,7 +373,7 @@
     WT_Logical_Point center = filledEllipse.position();
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, (WT_Logical_Point*)&center, 1, false);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (!dstpts)
         return WT_Result::Success;
@@ -394,7 +394,7 @@
     double startY = dstpts->y_coord(0) + ty*rcos + tx*rsin;
 
     LineBuffer* ell = LineBufferPool::NewLineBuffer(rewriter->GetBufferPool(), 20);
-    std::auto_ptr<LineBuffer> spEllLB(ell);
+    std::unique_ptr<LineBuffer> spEllLB(ell);
 
     ell->SetDrawingScale(1.0);
     ell->MoveTo(startX, startY);
@@ -434,7 +434,7 @@
     WT_Logical_Point center = outlineEllipse.position();
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, (WT_Logical_Point*)&center, 1, false);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (!dstpts)
         return WT_Result::Success;
@@ -455,7 +455,7 @@
     double startY = dstpts->y_coord(0) + ty*rcos + tx*rsin;
 
     LineBuffer* ell = LineBufferPool::NewLineBuffer(rewriter->GetBufferPool(), 20);
-    std::auto_ptr<LineBuffer> spEllLB(ell);
+    std::unique_ptr<LineBuffer> spEllLB(ell);
 
     ell->SetDrawingScale(1.0);
     ell->MoveTo(startX, startY);
@@ -499,7 +499,7 @@
 
     //do all necessary transformations
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, polygon.points(), polygon.count(), true);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (dstpts)
     {
@@ -540,7 +540,7 @@
         return WT_Result::Success;
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, srcpts, numPoints, true);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (dstpts)
     {
@@ -609,7 +609,7 @@
     endpts[3].m_y = bounds.m_max.m_y;
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, endpts, 4, false);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     int width;
     int height;
@@ -678,7 +678,7 @@
 
     //do all necessary transformations and clipping
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, polyline.points(), polyline.count(), true);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (dstpts)
     {
@@ -720,7 +720,7 @@
     WT_Logical_Point pt = text.position();
 
     LineBuffer* dstpts = rewriter->ProcessW2DPoints(file, &pt, 1, true);
-    std::auto_ptr<LineBuffer> spDstLB(dstpts);
+    std::unique_ptr<LineBuffer> spDstLB(dstpts);
 
     if (dstpts)
     {

Modified: trunk/MgDev/Common/Renderers/DWFRenderer.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/DWFRenderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/DWFRenderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -559,7 +559,7 @@
 void DWFRenderer::ProcessPolygon(LineBuffer* srclb, RS_FillStyle& fill)
 {
     LineBuffer* workbuffer = srclb->Optimize(m_drawingScale, m_pPool);
-    std::auto_ptr<LineBuffer> spLB(workbuffer);
+    std::unique_ptr<LineBuffer> spLB(workbuffer);
 
     if (workbuffer->point_count() == 0)
     {
@@ -714,7 +714,7 @@
     }
 
     LineBuffer* workbuffer = srclb->Optimize(m_drawingScale, m_pPool);
-    std::auto_ptr<LineBuffer> spLB(workbuffer);
+    std::unique_ptr<LineBuffer> spLB(workbuffer);
 
     WritePolylines(workbuffer);
 
@@ -3458,7 +3458,7 @@
     WT_Matrix xform = file.desired_rendition().drawing_info().units().dwf_to_application_adjoint_transform();
 
     LineBuffer* lb = LineBufferPool::NewLineBuffer(m_pPool, numpts);
-    std::auto_ptr<LineBuffer> spLB(lb);
+    std::unique_ptr<LineBuffer> spLB(lb);
     lb->Reset();
 
     //

Modified: trunk/MgDev/Common/Renderers/GDRenderer.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/GDRenderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/GDRenderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -445,7 +445,7 @@
         return;
 
     LineBuffer* workbuffer = lb;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -506,7 +506,7 @@
         return;
 
     LineBuffer* workbuffer = lb;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -1340,7 +1340,7 @@
 
     // create the destination line buffer
     LineBuffer* destLB = LineBufferPool::NewLineBuffer(m_pPool, 8);
-    std::auto_ptr<LineBuffer> spDestLB(destLB);
+    std::unique_ptr<LineBuffer> spDestLB(destLB);
 
     // special code for Fenceline1 style
     int numCapSegs = 0;
@@ -1717,7 +1717,7 @@
 void GDRenderer::ProcessLine(SE_ApplyContext* ctx, SE_RenderLineStyle* style)
 {
     LineBuffer* featGeom = ctx->geometry;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     if (s_bGeneralizeData)
     {
@@ -1749,7 +1749,7 @@
 void GDRenderer::ProcessArea(SE_ApplyContext* ctx, SE_RenderAreaStyle* style)
 {
     LineBuffer* featGeom = ctx->geometry;
-    std::auto_ptr<LineBuffer> spLB;
+    std::unique_ptr<LineBuffer> spLB;
 
     // can't apply an area style to point and linestring geometry types
     switch (featGeom->geom_type())
@@ -2082,7 +2082,7 @@
     WT_Matrix xform = file.desired_rendition().drawing_info().units().dwf_to_application_adjoint_transform();
 
     LineBuffer* lb = LineBufferPool::NewLineBuffer(m_pPool, numpts);
-    std::auto_ptr<LineBuffer> spLB(lb);
+    std::unique_ptr<LineBuffer> spLB(lb);
     lb->Reset();
 
     //

Modified: trunk/MgDev/Common/Renderers/GDW2DRewriter.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/GDW2DRewriter.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/GDW2DRewriter.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -480,7 +480,7 @@
 
             // use a line buffer to tessellate the arc
             LineBuffer* ell = LineBufferPool::NewLineBuffer(rewriter->GetBufferPool(), 20);
-            std::auto_ptr<LineBuffer> spEllLB(ell);
+            std::unique_ptr<LineBuffer> spEllLB(ell);
 
             ell->SetDrawingScale(1.0);
             ell->MoveTo(startX, startY);
@@ -614,7 +614,7 @@
 
             // use a line buffer to tessellate the arc
             LineBuffer* ell = LineBufferPool::NewLineBuffer(rewriter->GetBufferPool(), 20);
-            std::auto_ptr<LineBuffer> spEllLB(ell);
+            std::unique_ptr<LineBuffer> spEllLB(ell);
 
             ell->SetDrawingScale(1.0);
             ell->MoveTo(startX, startY);

Modified: trunk/MgDev/Common/Renderers/UTFGridRenderer.cpp
===================================================================
--- trunk/MgDev/Common/Renderers/UTFGridRenderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/UTFGridRenderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -326,7 +326,7 @@
     // transform to coordinates of temporary image where we
     // draw symbol before transfering to the map
     LineBuffer* lb = LineBufferPool::NewLineBuffer(m_pPool, 8);
-    std::auto_ptr<LineBuffer> spLB(lb);
+    std::unique_ptr<LineBuffer> spLB(lb);
 
     double tempx, tempy;
     for (int i = 0; i<npts; ++i)

Modified: trunk/MgDev/Common/Renderers/stdafx.h
===================================================================
--- trunk/MgDev/Common/Renderers/stdafx.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Renderers/stdafx.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -37,7 +37,6 @@
 typedef unsigned long DWORD;
 #define _wcsnicmp wcsncasecmp
 #define _wcsicmp wcscasecmp
-#define _isnan isnan
 #define _finite finite
 
 #endif //_WIN32

Deleted: trunk/MgDev/Common/Schema/ClassDefinition-3.3.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/ClassDefinition-3.3.0.xsd	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Schema/ClassDefinition-3.3.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:element name="ClassDefinition" type="ClassDefinition">
-    <xs:annotation>
-      <xs:documentation>A FDO Class Definition.</xs:documentation>
-    </xs:annotation>
-  </xs:element>
-  <xs:complexType name="ClassDefinition">
-    <xs:annotation>
-      <xs:documentation>A FDO Class Definition.</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="Name" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The name of this class definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Description" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The description of this class definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="IsAbstract" type="xs:boolean">
-        <xs:annotation>
-          <xs:documentation>Indicates if this class definition is abstract</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="IsComputed" type="xs:boolean">
-        <xs:annotation>
-          <xs:documentation>Indicates if this class definition is computed</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="DefaultGeometryPropertyName" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The name of the designated geometry property of this class definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Properties" type="PropertyDefinitionCollection">
-        <xs:annotation>
-          <xs:documentation>The collection of properties in this class definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="PropertyDefinitionCollection">
-    <xs:annotation>
-      <xs:documentation>A collection of property definitions</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="Property" type="PropertyDefinition" minOccurs="0" maxOccurs="unbounded" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="PropertyDefinition">
-    <xs:annotation>
-      <xs:documentation>A FDO property definition</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="Name" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The name of this property definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Description" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The description of this property definition</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="PropertyType" type="xs:integer">
-        <xs:annotation>
-          <xs:documentation>The type of this property definition. The value here is within the same set of values from MgFeaturePropertyType</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="IsIdentity" type="xs:boolean">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property is an identity property</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="DataType" type="xs:integer" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The data type of this data property. The value here is within the same set of values from MgPropertyType. Only applicable if this is a data property</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="DefaultValue" type="xs:string" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The default value for this data property. Only applicable if this is a data property and the data type is string</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Length" type="xs:integer" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The maximum length for this data property. Only applicable if this is a data property and the data type is string</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Nullable" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property is nullable. Only applicable if this is a raster or data property.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="ReadOnly" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property is read-only. Only applicable if this is a raster, geometry or data property.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="IsAutoGenerated" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property is auto-generated. Only applicable if this is a data property and the data type is int.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Precision" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The precision (total number of digits) of this property. Only applicable if this is a data property and the data type is decimal.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Scale" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The scale (number of digits to the right of the decimal point) of this property. Only applicable if this is a data property and the data type is decimal.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="SpatialContextAssociation" type="xs:string" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The spatial context name associated with this geometric property. Only applicable if this is a raster or geometry property.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="GeometryTypes" type="xs:integer" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>A bitmask that indicates the types which specify the categories of the geometries (point, line, surface, solid) that can be stored in this geometric property. Values here come from MgFeatureGeometricType.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="SpecificGeometryTypes" type="GeometryTypeInfo" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates the specific geometry types that can be stored in this geometric property. Values here come from MgGeometryType.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="HasElevation" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property has elevation. Only applicable if this is a geometry property.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="HasMeasure" type="xs:boolean" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>Indicates if this property has measure. Only applicable if this is a geometry property.</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="DefaultImageXSize" type="xs:integer" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The default size of the image file in the horizontal direction, in pixels (number of columns)</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="DefaultImageYSize" type="xs:integer" minOccurs="0">
-        <xs:annotation>
-          <xs:documentation>The default size of the image file in the vertical direction, in pixels (number of rows).</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="GeometryTypeInfo">
-    <xs:annotation>
-      <xs:documentation>Defines a list of geometric types</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="Type" type="xs:integer" minOccurs="0" maxOccurs="unbounded" />
-    </xs:sequence>
-  </xs:complexType>
-</xs:schema>
\ No newline at end of file

Copied: trunk/MgDev/Common/Schema/ClassDefinition-4.0.0.xsd (from rev 9519, sandbox/jng/v4/Common/Schema/ClassDefinition-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/ClassDefinition-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/ClassDefinition-4.0.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="ClassDefinition" type="ClassDefinition">
+    <xs:annotation>
+      <xs:documentation>A FDO Class Definition.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="ClassDefinition">
+    <xs:annotation>
+      <xs:documentation>A FDO Class Definition.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of this class definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The description of this class definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="IsAbstract" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates if this class definition is abstract</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="IsComputed" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates if this class definition is computed</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DefaultGeometryPropertyName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the designated geometry property of this class definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Properties" type="PropertyDefinitionCollection">
+        <xs:annotation>
+          <xs:documentation>The collection of properties in this class definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="PropertyDefinitionCollection">
+    <xs:annotation>
+      <xs:documentation>A collection of property definitions</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Property" type="PropertyDefinition" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="PropertyDefinition">
+    <xs:annotation>
+      <xs:documentation>A FDO property definition</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of this property definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The description of this property definition</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="PropertyType" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The type of this property definition. The value here is within the same set of values from MgFeaturePropertyType</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="IsIdentity" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property is an identity property</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DataType" type="xs:integer" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The data type of this data property. The value here is within the same set of values from MgPropertyType. Only applicable if this is a data property</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DefaultValue" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The default value for this data property. Only applicable if this is a data property and the data type is string</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Length" type="xs:integer" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The maximum length for this data property. Only applicable if this is a data property and the data type is string</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Nullable" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property is nullable. Only applicable if this is a raster or data property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ReadOnly" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property is read-only. Only applicable if this is a raster, geometry or data property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="IsAutoGenerated" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property is auto-generated. Only applicable if this is a data property and the data type is int.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Precision" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The precision (total number of digits) of this property. Only applicable if this is a data property and the data type is decimal.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Scale" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The scale (number of digits to the right of the decimal point) of this property. Only applicable if this is a data property and the data type is decimal.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="SpatialContextAssociation" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The spatial context name associated with this geometric property. Only applicable if this is a raster or geometry property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="GeometryTypes" type="xs:integer" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>A bitmask that indicates the types which specify the categories of the geometries (point, line, surface, solid) that can be stored in this geometric property. Values here come from MgFeatureGeometricType.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="SpecificGeometryTypes" type="GeometryTypeInfo" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates the specific geometry types that can be stored in this geometric property. Values here come from MgGeometryType.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="HasElevation" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property has elevation. Only applicable if this is a geometry property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="HasMeasure" type="xs:boolean" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Indicates if this property has measure. Only applicable if this is a geometry property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DefaultImageXSize" type="xs:integer" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The default size of the image file in the horizontal direction, in pixels (number of columns)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DefaultImageYSize" type="xs:integer" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The default size of the image file in the vertical direction, in pixels (number of rows).</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="GeometryTypeInfo">
+    <xs:annotation>
+      <xs:documentation>Defines a list of geometric types</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Type" type="xs:integer" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Deleted: trunk/MgDev/Common/Schema/FeatureSchemaCollection-3.3.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/FeatureSchemaCollection-3.3.0.xsd	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Schema/FeatureSchemaCollection-3.3.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:include schemaLocation="ClassDefinition-3.3.0.xsd"/>
-  <xs:element name="FeatureSchemaCollection" type="FeatureSchemaCollection">
-    <xs:annotation>
-      <xs:documentation>A FDO Feature Schema Definition.</xs:documentation>
-    </xs:annotation>
-  </xs:element>
-  <xs:complexType name="FeatureSchemaCollection">
-    <xs:sequence>
-      <xs:element name="FeatureSchema" type="FeatureSchema" minOccurs="0" maxOccurs="unbounded">
-        <xs:annotation>
-          <xs:documentation>The feature schemas in this collection</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="FeatureSchema">
-    <xs:annotation>
-      <xs:documentation>A FDO Feature Schema.</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="Name" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The name of this feature schema</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Description" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The description of this feature schema</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Classes" type="ClassDefinitionCollection">
-        <xs:annotation>
-          <xs:documentation>The collection of classes in this schema</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="ClassDefinitionCollection">
-    <xs:annotation>
-      <xs:documentation>A collection of FDO class definitions</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="ClassDefinition" type="ClassDefinition" />
-    </xs:sequence>
-  </xs:complexType>
-</xs:schema>
\ No newline at end of file

Copied: trunk/MgDev/Common/Schema/FeatureSchemaCollection-4.0.0.xsd (from rev 9519, sandbox/jng/v4/Common/Schema/FeatureSchemaCollection-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/FeatureSchemaCollection-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/FeatureSchemaCollection-4.0.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:include schemaLocation="ClassDefinition-4.0.0.xsd"/>
+  <xs:element name="FeatureSchemaCollection" type="FeatureSchemaCollection">
+    <xs:annotation>
+      <xs:documentation>A FDO Feature Schema Definition.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="FeatureSchemaCollection">
+    <xs:sequence>
+      <xs:element name="FeatureSchema" type="FeatureSchema" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The feature schemas in this collection</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="FeatureSchema">
+    <xs:annotation>
+      <xs:documentation>A FDO Feature Schema.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of this feature schema</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The description of this feature schema</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Classes" type="ClassDefinitionCollection">
+        <xs:annotation>
+          <xs:documentation>The collection of classes in this schema</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ClassDefinitionCollection">
+    <xs:annotation>
+      <xs:documentation>A collection of FDO class definitions</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="ClassDefinition" type="ClassDefinition" />
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Deleted: trunk/MgDev/Common/Schema/GeometryInfo-3.3.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/GeometryInfo-3.3.0.xsd	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Schema/GeometryInfo-3.3.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:element name="GeometryInfo">
-    <xs:annotation>
-      <xs:documentation>Geometry Information</xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="Area" type="xs:double" />
-        <xs:element name="Dimension" type="xs:int" />
-        <xs:element name="Length" type="xs:double" />
-        <xs:element name="IsClosed" type="xs:boolean" />
-        <xs:element name="IsEmpty" type="xs:boolean" />
-        <xs:element name="IsSimple" type="xs:boolean" />
-        <xs:element name="IsValid" type="xs:boolean" />
-        <xs:element name="Envelope" type="Envelope" />
-        <xs:element name="Centroid" type="Coordinate" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:complexType name="Coordinate">
-    <xs:annotation>
-      <xs:documentation>Represents a coordinate</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="X" type="xs:double">
-        <xs:annotation>
-          <xs:documentation>x-coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Y" type="xs:double">
-        <xs:annotation>
-          <xs:documentation>y-coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="Envelope">
-    <xs:annotation>
-      <xs:documentation>Represents a bounding box defined in terms of a lower left coordinate and an upper right coordinate</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="LowerLeft" type="Coordinate">
-        <xs:annotation>
-          <xs:documentation>Lower-left coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="UpperRight" type="Coordinate">
-        <xs:annotation>
-          <xs:documentation>Upper-right coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-</xs:schema>

Copied: trunk/MgDev/Common/Schema/GeometryInfo-4.0.0.xsd (from rev 9519, sandbox/jng/v4/Common/Schema/GeometryInfo-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/GeometryInfo-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/GeometryInfo-4.0.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="GeometryInfo">
+    <xs:annotation>
+      <xs:documentation>Geometry Information</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="Area" type="xs:double" />
+        <xs:element name="Dimension" type="xs:int" />
+        <xs:element name="Length" type="xs:double" />
+        <xs:element name="IsClosed" type="xs:boolean" />
+        <xs:element name="IsEmpty" type="xs:boolean" />
+        <xs:element name="IsSimple" type="xs:boolean" />
+        <xs:element name="IsValid" type="xs:boolean" />
+        <xs:element name="Envelope" type="Envelope" />
+        <xs:element name="Centroid" type="Coordinate" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="Coordinate">
+    <xs:annotation>
+      <xs:documentation>Represents a coordinate</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="X" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>x-coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Y" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>y-coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="Envelope">
+    <xs:annotation>
+      <xs:documentation>Represents a bounding box defined in terms of a lower left coordinate and an upper right coordinate</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="LowerLeft" type="Coordinate">
+        <xs:annotation>
+          <xs:documentation>Lower-left coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="UpperRight" type="Coordinate">
+        <xs:annotation>
+          <xs:documentation>Upper-right coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>

Deleted: trunk/MgDev/Common/Schema/TransformedCoordinateCollection-3.3.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/TransformedCoordinateCollection-3.3.0.xsd	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Schema/TransformedCoordinateCollection-3.3.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:element name="TransformedCoordinateCollection">
-    <xs:annotation>
-      <xs:documentation>A collection of transformed coordinates</xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="CoordinateSystem" type="CoordinateSystemInfo" />
-        <xs:element name="TransformedCoordinate" type="TransformedCoordinate" minOccurs="0" maxOccurs="unbounded" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:complexType name="CoordinateSystemInfo">
-    <xs:annotation>
-      <xs:documentation>Information about the coordinate system</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="MentorCode" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>Mentor (CS-Map) coordinate system code</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="EpsgCode" type="xs:integer">
-        <xs:annotation>
-          <xs:documentation>EPSG code</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Wkt" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>The well-known text of the coordinate system</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="TransformedCoordinate">
-    <xs:annotation>
-      <xs:documentation>Represents a transformed coordinate</xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="X" type="xs:double" minOccurs="0" maxOccurs="1">
-        <xs:annotation>
-          <xs:documentation>x-coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Y" type="xs:double" minOccurs="0" maxOccurs="1">
-        <xs:annotation>
-          <xs:documentation>y-coordinate</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-      <xs:element name="Error" type="xs:string" minOccurs="0" maxOccurs="1">
-        <xs:annotation>
-          <xs:documentation>The string token that failed to parse into a coordinate pair</xs:documentation>
-        </xs:annotation>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-</xs:schema>

Copied: trunk/MgDev/Common/Schema/TransformedCoordinateCollection-4.0.0.xsd (from rev 9519, sandbox/jng/v4/Common/Schema/TransformedCoordinateCollection-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/TransformedCoordinateCollection-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/TransformedCoordinateCollection-4.0.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="TransformedCoordinateCollection">
+    <xs:annotation>
+      <xs:documentation>A collection of transformed coordinates</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="CoordinateSystem" type="CoordinateSystemInfo" />
+        <xs:element name="TransformedCoordinate" type="TransformedCoordinate" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="CoordinateSystemInfo">
+    <xs:annotation>
+      <xs:documentation>Information about the coordinate system</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="MentorCode" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>Mentor (CS-Map) coordinate system code</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="EpsgCode" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>EPSG code</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Wkt" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The well-known text of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="TransformedCoordinate">
+    <xs:annotation>
+      <xs:documentation>Represents a transformed coordinate</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="X" type="xs:double" minOccurs="0" maxOccurs="1">
+        <xs:annotation>
+          <xs:documentation>x-coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Y" type="xs:double" minOccurs="0" maxOccurs="1">
+        <xs:annotation>
+          <xs:documentation>y-coordinate</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Error" type="xs:string" minOccurs="0" maxOccurs="1">
+        <xs:annotation>
+          <xs:documentation>The string token that failed to parse into a coordinate pair</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>

Deleted: trunk/MgDev/Common/Schema/UnitOfMeasure-3.3.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/UnitOfMeasure-3.3.0.xsd	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Schema/UnitOfMeasure-3.3.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:element name="UnitOfMeasure">
-    <xs:annotation>
-      <xs:documentation>Unit of measure</xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="Value" type="xs:double" />
-        <xs:element name="Unit" type="xs:string" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>

Copied: trunk/MgDev/Common/Schema/UnitOfMeasure-4.0.0.xsd (from rev 9519, sandbox/jng/v4/Common/Schema/UnitOfMeasure-4.0.0.xsd)
===================================================================
--- trunk/MgDev/Common/Schema/UnitOfMeasure-4.0.0.xsd	                        (rev 0)
+++ trunk/MgDev/Common/Schema/UnitOfMeasure-4.0.0.xsd	2019-05-29 16:21:42 UTC (rev 9520)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="UnitOfMeasure">
+    <xs:annotation>
+      <xs:documentation>Unit of measure</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="Value" type="xs:double" />
+        <xs:element name="Unit" type="xs:string" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>

Modified: trunk/MgDev/Common/Stylization/Band.h
===================================================================
--- trunk/MgDev/Common/Stylization/Band.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/Band.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -345,10 +345,10 @@
     Point2D                                 m_westSourthPoint;
 
     // Cache for Aspect values of this band.
-    mutable std::auto_ptr<Band>          m_spAspectBand;
+    mutable std::unique_ptr<Band>          m_spAspectBand;
 
     // Cache for Slope values of this band.
-    mutable std::auto_ptr<Band>          m_spSlopeBand;
+    mutable std::unique_ptr<Band>          m_spSlopeBand;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////////////

Modified: trunk/MgDev/Common/Stylization/DefaultStylizer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/DefaultStylizer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/DefaultStylizer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -286,7 +286,7 @@
     }
 
     // elevation settings - also invariant
-    std::auto_ptr<RS_ElevationSettings> spElevSettings;
+    std::unique_ptr<RS_ElevationSettings> spElevSettings;
     MdfModel::ElevationSettings* modelElevSettings = scaleRange->GetElevationSettings();
     if (modelElevSettings != NULL)
     {
@@ -330,7 +330,7 @@
         if (!lb)
             continue;
 
-        std::auto_ptr<LineBuffer> spLB(lb);
+        std::unique_ptr<LineBuffer> spLB(lb);
 
         // tell line buffer the current drawing scale (used for arc tessellation)
         lb->SetDrawingScale(drawingScale);

Modified: trunk/MgDev/Common/Stylization/GridColorHandler.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/GridColorHandler.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridColorHandler.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -52,7 +52,7 @@
 
 GridColorBandHandler* GridColorHandler::CreateBandHandler(const MdfModel::RuleCollection *pRules, const GridData *pGrid)
 {
-    std::auto_ptr<GridColorBandHandler> spHandler(new GridColorBandHandler());
+    std::unique_ptr<GridColorBandHandler> spHandler(new GridColorBandHandler());
     if (!spHandler->Initialize(pRules, pGrid))
         spHandler.reset();
     return spHandler.release();
@@ -60,7 +60,7 @@
 
 GridColorBandsHandler* GridColorHandler::CreateBandsHandler(const MdfModel::RuleCollection *pRules, const GridData *pGrid)
 {
-    std::auto_ptr<GridColorBandsHandler> spHandler(new GridColorBandsHandler());
+    std::unique_ptr<GridColorBandsHandler> spHandler(new GridColorBandsHandler());
     if (!spHandler->Initialize(pRules, pGrid))
         spHandler.reset();
     return spHandler.release();
@@ -68,7 +68,7 @@
 
 GridColorThemeHandler* GridColorHandler::CreateThemeHandler(const MdfModel::RuleCollection *pRules, const GridData *pGrid)
 {
-    std::auto_ptr<GridColorThemeHandler> spHandler(new GridColorThemeHandler());
+    std::unique_ptr<GridColorThemeHandler> spHandler(new GridColorThemeHandler());
     if (!spHandler->Initialize(pRules, pGrid))
         spHandler.reset();
     return spHandler.release();
@@ -76,7 +76,7 @@
 
 GridColorNullHandler* GridColorHandler::CreateNullHandler(const MdfModel::RuleCollection *pRules, const GridData *pGrid)
 {
-    std::auto_ptr<GridColorNullHandler> spHandler(new GridColorNullHandler);
+    std::unique_ptr<GridColorNullHandler> spHandler(new GridColorNullHandler);
     if (!spHandler->Initialize(pRules, pGrid))
         spHandler.reset();
     return spHandler.release();

Modified: trunk/MgDev/Common/Stylization/GridColorThemeHandler.h
===================================================================
--- trunk/MgDev/Common/Stylization/GridColorThemeHandler.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridColorThemeHandler.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -87,10 +87,10 @@
 
 private:
     // Theme information extracted from the rules.
-    std::auto_ptr<GridTheme>          m_spTheme;
+    std::unique_ptr<GridTheme>          m_spTheme;
 
     // Hash table generated from the theme info.
-    std::auto_ptr<GridThemeHashTable> m_spHashTable;
+    std::unique_ptr<GridThemeHashTable> m_spHashTable;
 
     // Then band to be themed.
     const Band *m_pThemeBand;

Modified: trunk/MgDev/Common/Stylization/GridData.h
===================================================================
--- trunk/MgDev/Common/Stylization/GridData.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridData.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -225,11 +225,11 @@
     double                              m_dCoordSysUnitLength;
 
     // Cache for hillshade values for this band
-    mutable std::auto_ptr<Band>             m_spHillShadeBand;
-    mutable std::auto_ptr<MdfModel::HillShade> m_spMdfHillShade;
+    mutable std::unique_ptr<Band>             m_spHillShadeBand;
+    mutable std::unique_ptr<MdfModel::HillShade> m_spMdfHillShade;
 
     // Store the raw color band without hillshade effect if the color band includes effect.
-    std::auto_ptr<Band>              m_spNoHillShadeColorBand;
+    std::unique_ptr<Band>              m_spNoHillShadeColorBand;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////////////

Modified: trunk/MgDev/Common/Stylization/GridStyleColorHandler.h
===================================================================
--- trunk/MgDev/Common/Stylization/GridStyleColorHandler.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridStyleColorHandler.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -138,7 +138,7 @@
 
 private:
     // Handler for the GridColor
-    std::auto_ptr<GridColorHandler> m_spColorHandler;
+    std::unique_ptr<GridColorHandler> m_spColorHandler;
 
     // Sun vector
     Vector3D m_sun;
@@ -158,7 +158,7 @@
     // Whether to apply hillshade.
     bool m_bDoHillShade;
     bool m_bCalcHillShade; // Calculate hillshade for later usage.
-    std::auto_ptr<Band>     m_spCacheHillShade;
+    std::unique_ptr<Band>     m_spCacheHillShade;
     const MdfModel::HillShade *m_pCalcMdfHillShade;
 
     // NoHillShade color band, means that color band

Modified: trunk/MgDev/Common/Stylization/GridStylizer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/GridStylizer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridStylizer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -66,7 +66,7 @@
     if (NULL != pColorStyle)
     {
         // Add handler to deal with color style.
-        std::auto_ptr<GridStyleColorHandler> spHandler(new GridStyleColorHandler(fOpacity));
+        std::unique_ptr<GridStyleColorHandler> spHandler(new GridStyleColorHandler(fOpacity));
         if (spHandler->Initialize(pGrid, pColorStyle))
             styleHandlers.Adopt(spHandler.release());
     }
@@ -73,11 +73,11 @@
     if (NULL != pSurfaceStyle)
     {
         // Add handler to deal with surface style
-        std::auto_ptr<GridStyleSurfaceHandler> spHandler(new GridStyleSurfaceHandler());
+        std::unique_ptr<GridStyleSurfaceHandler> spHandler(new GridStyleSurfaceHandler());
         if (spHandler->Initialize(pGrid, pSurfaceStyle))
             styleHandlers.Adopt(spHandler.release());
         // Add handler to deal with the color on null pixels.
-        std::auto_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
+        std::unique_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
         if (spSurfaceColorHandler->Initialize(pGrid, pSurfaceStyle->GetDefaultColor()))
             styleHandlers.Adopt(spSurfaceColorHandler.release());
     }
@@ -101,11 +101,11 @@
     // default color.
     MdfModel::MdfOwnerCollection<GridStyleHandler> styleHandlers;
     // Add handler to deal with the color style.
-    std::auto_ptr<GridStyleColorHandler> spHandler(new GridStyleColorHandler());
+    std::unique_ptr<GridStyleColorHandler> spHandler(new GridStyleColorHandler());
     if (spHandler->Initialize(pGrid, pStyle))
         styleHandlers.Adopt(spHandler.release());
     // Add handler to deal with the color on null pixels.
-    std::auto_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
+    std::unique_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
     if (spSurfaceColorHandler->Initialize(pGrid, sDefaultColor))
         styleHandlers.Adopt(spSurfaceColorHandler.release());
     return VisitStyleHandlers(styleHandlers, pGrid->GetXCount(), pGrid->GetYCount());
@@ -120,11 +120,11 @@
     // default color.
     MdfModel::MdfOwnerCollection<GridStyleHandler> styleHandlers;
     // Add handler to deal with surface style
-    std::auto_ptr<GridStyleSurfaceHandler> spHandler(new GridStyleSurfaceHandler());
+    std::unique_ptr<GridStyleSurfaceHandler> spHandler(new GridStyleSurfaceHandler());
     if (spHandler->Initialize(pGrid, pStyle))
         styleHandlers.Adopt(spHandler.release());
     // Add handler to deal with the color on null pixels.
-    std::auto_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
+    std::unique_ptr<GridStyleSurfaceColorHandler> spSurfaceColorHandler(new GridStyleSurfaceColorHandler());
     if (spSurfaceColorHandler->Initialize(pGrid, pStyle->GetDefaultColor()))
         styleHandlers.Adopt(spSurfaceColorHandler.release());
     return VisitStyleHandlers(styleHandlers, pGrid->GetXCount(), pGrid->GetYCount());
@@ -147,7 +147,7 @@
     {
         // Not cached, then we generate one
         assert(false);
-        std::auto_ptr<Band> spNewHSBand(new Band(Band::Double32, pGrid));
+        std::unique_ptr<Band> spNewHSBand(new Band(Band::Double32, pGrid));
         Band* pHillShadeBand = pGrid->GetBand(pHS->GetBand());
         if (NULL == pHillShadeBand)
             return false;

Modified: trunk/MgDev/Common/Stylization/GridStylizer.h
===================================================================
--- trunk/MgDev/Common/Stylization/GridStylizer.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridStylizer.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -239,7 +239,7 @@
     ReactorCollection                       m_reactors;
 
     // Status reporter
-    std::auto_ptr<GridApplyStatusReporter>  m_spReporter;
+    std::unique_ptr<GridApplyStatusReporter>  m_spReporter;
 
     // Prevent coping and assigning.
     GridStylizer(const GridStylizer &);

Modified: trunk/MgDev/Common/Stylization/GridThemeParser.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/GridThemeParser.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/GridThemeParser.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -57,7 +57,7 @@
     }
     for (++i; i < nCount; ++i)
     {
-        std::auto_ptr<GridTheme> pSingleTheme(ParseThemeColorRule(dynamic_cast<MdfModel::GridColorRule*>(pRules->GetAt(i))));
+        std::unique_ptr<GridTheme> pSingleTheme(ParseThemeColorRule(dynamic_cast<MdfModel::GridColorRule*>(pRules->GetAt(i))));
         if (pSingleTheme.get() == NULL)
         {
             // Wrong filter string, continue to next filter.

Modified: trunk/MgDev/Common/Stylization/LineBuffer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/LineBuffer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/LineBuffer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -1347,7 +1347,7 @@
     // don't set any offset for new linebuffer, because it is already applied,
     // and MoveTo and LineTo would apply it again. Instead, set at end
     LineBuffer* ret = LineBufferPool::NewLineBuffer(lbp, m_cur_types, m_dimensionality, m_bIgnoreZ);
-    std::auto_ptr<LineBuffer> spLB(ret);
+    std::unique_ptr<LineBuffer> spLB(ret);
     ret->SetGeometryType(geom_type());
 
     // optimization
@@ -1467,7 +1467,7 @@
         || m_bounds.maxy < b.miny)
         return NULL;
 
-    std::auto_ptr<LineBuffer> spLB(LineBufferPool::NewLineBuffer(lbp, m_cur_types, m_dimensionality, m_bIgnoreZ));
+    std::unique_ptr<LineBuffer> spLB(LineBufferPool::NewLineBuffer(lbp, m_cur_types, m_dimensionality, m_bIgnoreZ));
 
     if (clipType == ctArea)
     {

Modified: trunk/MgDev/Common/Stylization/PointAdapter.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/PointAdapter.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/PointAdapter.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -20,8 +20,8 @@
 #include "PointAdapter.h"
 #include "LineBuffer.h"
 #include "FeatureTypeStyleVisitor.h"
+#include <cmath>
 
-
 //////////////////////////////////////////////////////////////////////////////
 PointAdapter::PointAdapter(LineBufferPool* lbp) : GeometryAdapter(lbp)
 {
@@ -99,7 +99,7 @@
     //       of the FDO query.
 
     LineBuffer* lb = geometry;
-    std::auto_ptr<LineBuffer> spClipLB;
+    std::unique_ptr<LineBuffer> spClipLB;
 
     if (renderer->RequiresClipping())
     {
@@ -207,7 +207,7 @@
         // multi should work for simple polygons also
         lb->Centroid(LineBuffer::ctPoint, &cx, &cy, &dummy);
 
-        if (!_isnan(cx) && !_isnan(cy))
+        if (!std::isnan(cx) && !std::isnan(cy))
         {
             // if there was no point symbol, the label is the symbol,
             // so we send without overposting and at the center point

Modified: trunk/MgDev/Common/Stylization/PolygonAdapter.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/PolygonAdapter.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/PolygonAdapter.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -20,8 +20,8 @@
 #include "PolygonAdapter.h"
 #include "LineBuffer.h"
 #include "FeatureTypeStyleVisitor.h"
+#include <cmath>
 
-
 //////////////////////////////////////////////////////////////////////////////
 PolygonAdapter::PolygonAdapter(LineBufferPool* lbp) : GeometryAdapter(lbp)
 {
@@ -134,7 +134,7 @@
     //-------------------------------------------------------
 
     LineBuffer* lb = geometry;
-    std::auto_ptr<LineBuffer> spClipLB;
+    std::unique_ptr<LineBuffer> spClipLB;
 
     if (bClip)
     {
@@ -232,7 +232,7 @@
         // multi should work for simple polygons too
         lb->Centroid(LineBuffer::ctArea, &cx, &cy, &dummy);
 
-        if (!_isnan(cx) && !_isnan(cy))
+        if (!std::isnan(cx) && !std::isnan(cy))
             AddLabel(cx, cy, 0.0, false, label, RS_OverpostType_AllFit, true, renderer, lb);
     }
 

Modified: trunk/MgDev/Common/Stylization/PolylineAdapter.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/PolylineAdapter.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/PolylineAdapter.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -20,8 +20,8 @@
 #include "PolylineAdapter.h"
 #include "LineBuffer.h"
 #include "FeatureTypeStyleVisitor.h"
+#include <cmath>
 
-
 //////////////////////////////////////////////////////////////////////////////
 PolylineAdapter::PolylineAdapter(LineBufferPool* lbp) : GeometryAdapter(lbp)
 {
@@ -186,7 +186,7 @@
     //-------------------------------------------------------
 
     LineBuffer* lb = geometry;
-    std::auto_ptr<LineBuffer> spClipLB;
+    std::unique_ptr<LineBuffer> spClipLB;
 
     if (bClip)
     {
@@ -288,7 +288,7 @@
         // multi should work for simple polylines too
         lb->Centroid(LineBuffer::ctLine, &cx, &cy, &slope_rad);
 
-        if (!_isnan(cx) && !_isnan(cy))
+        if (!std::isnan(cx) && !std::isnan(cy))
             AddLabel(cx, cy, slope_rad, true, label, RS_OverpostType_AllFit, true, renderer, label->GetSymbol()->IsAdvancedPlacement()? lb : NULL);
     }
 

Modified: trunk/MgDev/Common/Stylization/SE_AreaPositioning.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_AreaPositioning.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/SE_AreaPositioning.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -17,8 +17,8 @@
 
 #include "stdafx.h"
 #include "SE_AreaPositioning.h"
+#include <cmath>
 
-
 ///////////////////////////////////////////////////////////////////////////////
 // Initializes the area positioning class for iteration over the geometry.
 SE_AreaPositioning::SE_AreaPositioning(LineBuffer* geom, SE_RenderAreaStyle* style, double w2sAngleRad)
@@ -57,7 +57,7 @@
         geom->Centroid(LineBuffer::ctArea, &m_base_pt.x, &m_base_pt.y, &slope);
 
         // if we can't compute the centroid then just set the base point to the origin
-        if (_isnan(m_base_pt.x) || _isnan(m_base_pt.y))
+        if (std::isnan(m_base_pt.x) || std::isnan(m_base_pt.y))
         {
             m_base_pt.x = 0.0;
             m_base_pt.y = 0.0;

Modified: trunk/MgDev/Common/Stylization/SE_LineRenderer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_LineRenderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/SE_LineRenderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -861,7 +861,7 @@
                                     // use symbol bounds to quickly check whether we need to clip
                                     // TODO: use the primitive's bounds and not the symbol bounds
                                     LineBuffer* geomToDraw = &geom;
-                                    std::auto_ptr<LineBuffer> spLB;
+                                    std::unique_ptr<LineBuffer> spLB;
                                     if (sym_minx < startpos || sym_maxx > endpos)
                                     {
                                         // check if symbol is completely outside clip region
@@ -895,7 +895,7 @@
                                     // use symbol bounds to quickly check whether we need to clip
                                     // TODO: use the primitive's bounds and not the symbol bounds
                                     LineBuffer* geomToDraw = &geom;
-                                    std::auto_ptr<LineBuffer> spLB;
+                                    std::unique_ptr<LineBuffer> spLB;
                                     if (sym_minx < startpos || sym_maxx > endpos)
                                     {
                                         // check if symbol is completely outside clip region
@@ -1644,7 +1644,7 @@
         return NULL;
 
     LineBuffer* ret = LineBufferPool::NewLineBuffer(lbp, geometry.point_count(), FdoDimensionality_XY, true);
-    std::auto_ptr<LineBuffer> spRetLB(ret);
+    std::unique_ptr<LineBuffer> spRetLB(ret);
     ret->SetGeometryType(geometry.geom_type());
 
     // expand clip region a little so that we don't throw
@@ -1714,7 +1714,7 @@
         return NULL;
 
     LineBuffer* ret = LineBufferPool::NewLineBuffer(lbp, geometry.point_count(), FdoDimensionality_XY, true);
-    std::auto_ptr<LineBuffer> spRetLB(ret);
+    std::unique_ptr<LineBuffer> spRetLB(ret);
     ret->SetGeometryType(geometry.geom_type());
 
     // expand clip region a little so that we don't throw

Modified: trunk/MgDev/Common/Stylization/SE_PositioningAlgorithms.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_PositioningAlgorithms.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/SE_PositioningAlgorithms.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -23,8 +23,8 @@
 #include "RS_FontEngine.h"
 #include "RS_FeatureReader.h"
 #include "SE_SymbolDefProxies.h"
+#include <cmath>
 
-
 // Recomputes the bounds of an SE_RenderStyle that contains a text
 // whose alignment we have messed with.
 void UpdateStyleBounds(SE_RenderStyle* st, SE_Renderer* se_renderer)
@@ -141,7 +141,7 @@
     }
 
     // don't add a label if we can't compute the centroid
-    if (_isnan(cx) || _isnan(cy))
+    if (std::isnan(cx) || std::isnan(cy))
         return;
 
     // need to convert centroid to screen units
@@ -206,7 +206,7 @@
     geometry->Centroid(LineBuffer::ctPoint, &cx, &cy, NULL);
 
     // don't add a label if we can't compute the centroid
-    if (_isnan(cx) || _isnan(cy))
+    if (std::isnan(cx) || std::isnan(cy))
         return;
 
     se_renderer->WorldToScreenPoint(cx, cy, cx, cy);

Modified: trunk/MgDev/Common/Stylization/SE_Renderer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_Renderer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/SE_Renderer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -374,7 +374,7 @@
 
     // transform the feature geometry to rendering space
     LineBuffer* xfgeom = LineBufferPool::NewLineBuffer(m_pPool, featGeom->point_count());
-    std::auto_ptr<LineBuffer> spLB(xfgeom);
+    std::unique_ptr<LineBuffer> spLB(xfgeom);
     *xfgeom = *featGeom;
 
     int size = featGeom->point_count();
@@ -484,7 +484,7 @@
             {
                 // if the raster symbol is selected, then draw the mask selection polygon only
                 LineBuffer *lb = LineBufferPool::NewLineBuffer(m_pPool, 5);
-                std::auto_ptr<LineBuffer> spLB(lb);
+                std::unique_ptr<LineBuffer> spLB(lb);
 
                 lb->MoveTo(rp->bounds[3].x, rp->bounds[3].y);
                 for (int i = 0; i < 4; ++i)


Property changes on: trunk/MgDev/Common/Stylization/SE_Renderer.cpp
___________________________________________________________________
Modified: svn:mergeinfo
## -2,5 +2,6 ##
 /branches/2.6/MgDev/Common/Stylization/SE_Renderer.cpp:8340
 /sandbox/adsk/2.4j/Common/Stylization/SE_Renderer.cpp:6327-6445
 /sandbox/jng/createruntimemap/Common/Stylization/SE_Renderer.cpp:7486-7555
+/sandbox/jng/v4/Common/Stylization/SE_Renderer.cpp:9511-9519
 /sandbox/rfc94/Common/Stylization/SE_Renderer.cpp:5099-5163
 /trunk/MgDev/Common/Stylization/SE_Renderer.cpp:6250-6326
\ No newline at end of property
Modified: trunk/MgDev/Common/Stylization/StylizationEngine.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/StylizationEngine.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/StylizationEngine.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -140,7 +140,7 @@
             if (!lb)
                 continue;
 
-            std::auto_ptr<LineBuffer> spLB(lb);
+            std::unique_ptr<LineBuffer> spLB(lb);
 
             // tell line buffer the current drawing scale (used for arc tessellation)
             lb->SetDrawingScale(drawingScale);
@@ -275,7 +275,7 @@
     // the rendering is done.
     CompositeSymbolization symbols;
 
-    std::auto_ptr<SymbolInstance> instance(new SymbolInstance());
+    std::unique_ptr<SymbolInstance> instance(new SymbolInstance());
     instance->AdoptSymbolDefinition(watermark->GetContent());
     instance->SetUsageContext(SymbolInstance::ucPoint);
     symbols.GetSymbolCollection()->Adopt(instance.release());
@@ -462,7 +462,7 @@
         //       pass.
         FdoPtr<FdoExpressionEngine> exec = ExpressionHelper::GetExpressionEngine(se_renderer, NULL);
 
-        std::auto_ptr<LineBuffer> spLB;
+        std::unique_ptr<LineBuffer> spLB;
         size_t nPos = watermarkPosList.size();
         for (size_t posIx=0; posIx<nPos; posIx+=2)
         {
@@ -1071,7 +1071,7 @@
 
     // prepare the geometry on which we will apply the styles
     LineBuffer* lb = geometry;
-    std::auto_ptr<LineBuffer> spClipLB;
+    std::unique_ptr<LineBuffer> spClipLB;
 
     if (bClip)
     {

Modified: trunk/MgDev/Common/Stylization/stdafx.h
===================================================================
--- trunk/MgDev/Common/Stylization/stdafx.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Common/Stylization/stdafx.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -33,6 +33,4 @@
 #define _wcsicmp  wcscasecmp
 #define _wcsnicmp wcsncasecmp
 
-#define _isnan    isnan
-
 #endif

Modified: trunk/MgDev/Server/src/Core/Server.h
===================================================================
--- trunk/MgDev/Server/src/Core/Server.h	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Core/Server.h	2019-05-29 16:21:42 UTC (rev 9520)
@@ -122,7 +122,7 @@
     ///////////////////////////////////////////////////////
     /// Member data
 private:
-    std::auto_ptr<MgServerInteractiveCommand> m_command;
+    std::unique_ptr<MgServerInteractiveCommand> m_command;
     bool m_bTestMode;
     bool m_bTestFdo;
 

Modified: trunk/MgDev/Server/src/Services/Feature/FeatureNumericFunctions.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Feature/FeatureNumericFunctions.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Services/Feature/FeatureNumericFunctions.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -689,29 +689,12 @@
 
 bool MgFeatureNumericFunctions::IsInf(double x)
 {
-    bool isInfinity = false;
-#ifdef _WIN32
-    int code = _fpclass(x);
-    if ((code == _FPCLASS_NINF) || (code == _FPCLASS_PINF))
-    {
-        isInfinity = true;
-    }
-#else
-    isInfinity = isinf(x);
-#endif
-
-    return isInfinity;
+    return std::isinf(x);
 }
 
 bool MgFeatureNumericFunctions::IsNan(double x)
 {
-    bool isNan = false;
-#ifdef _WIN32
-    isNan = _isnan(x);
-#else
-    isNan = isnan(x);
-#endif
-    return isNan;
+    return std::isnan(x);
 }
 
 // Calculate Standard Deviation for the values

Modified: trunk/MgDev/Server/src/Services/Feature/FeatureOperationFactory.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Feature/FeatureOperationFactory.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Services/Feature/FeatureOperationFactory.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -161,7 +161,7 @@
         {
         case VERSION_SUPPORTED(1,0):
         case VERSION_SUPPORTED(2,0):
-        case VERSION_SUPPORTED(3,3): //This is 2.0 with optional clean JSON output
+        case VERSION_SUPPORTED(4,0): //This is 2.0 with optional clean JSON output
             handler.reset(new MgOpGetCapabilities());
             break;
         default:
@@ -583,7 +583,7 @@
     case MgFeatureServiceOpId::GetWfsReader_Id:
         switch (VERSION_NO_PHASE(operationVersion))
         {
-        case VERSION_SUPPORTED(3, 3):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpGetWfsReader());
             break;
         default:

Modified: trunk/MgDev/Server/src/Services/Feature/ServerFeatureService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Feature/ServerFeatureService.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Services/Feature/ServerFeatureService.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -280,7 +280,7 @@
     Ptr<MgUserInformation> userInfo =  MgUserInformation::GetCurrentUserInfo();
     if (userInfo->GetApiVersion() != MG_API_VERSION(1,0,0) && 
         userInfo->GetApiVersion() != MG_API_VERSION(2,0,0) &&
-        userInfo->GetApiVersion() != MG_API_VERSION(3,3,0)) //This is 2.0.0 with optional clean JSON output
+        userInfo->GetApiVersion() != MG_API_VERSION(4,0,0)) //This is 2.0.0 with optional clean JSON output
     {
         throw new MgInvalidOperationVersionException(
             L"MgServerFeatureService.GetCapabilities", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Services/Rendering/RenderingOperationFactory.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -111,7 +111,7 @@
     case MgRenderingServiceOpId::RenderMetatile:
         switch (VERSION_NO_PHASE(operationVersion))
         {
-        case VERSION_SUPPORTED(3, 3):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpRenderMetatile());
             break;
         default:
@@ -122,7 +122,7 @@
     case MgRenderingServiceOpId::RenderTileFromMetaTile:
         switch (VERSION_NO_PHASE(operationVersion))
         {
-        case VERSION_SUPPORTED(3, 3):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpRenderTileFromMetatile());
             break;
         default:
@@ -133,7 +133,7 @@
     case MgRenderingServiceOpId::RenderTileUTFGrid:
         switch (VERSION_NO_PHASE(operationVersion))
         {
-        case VERSION_SUPPORTED(3, 3):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpRenderTileUTFGrid());
             break;
         default:
@@ -285,7 +285,7 @@
     case MgRenderingServiceOpId::QueryFeatureProperties3:
         switch (VERSION_NO_PHASE(operationVersion))
         {
-        case VERSION_SUPPORTED(3, 3):
+        case VERSION_SUPPORTED(4,0):
             handler.reset(new MgOpQueryFeatureProperties());
             break;
         default:

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -396,7 +396,7 @@
         sessionId = userInfo->GetMgSessionId();
 
     UTFGridContent content;
-    std::auto_ptr<UTFGridRenderer> dr(new UTFGridRenderer(&content));
+    std::unique_ptr<UTFGridRenderer> dr(new UTFGridRenderer(&content));
 
     RSMgSymbolManager mgr(m_svcResource);
     dr->SetSymbolManager(&mgr);

Modified: trunk/MgDev/Server/src/UnitTesting/TestMisc.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestMisc.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Server/src/UnitTesting/TestMisc.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -598,8 +598,8 @@
     try
     {
         //Just making sure this macro behaves as we expect
-        CPPUNIT_ASSERT_MESSAGE("Expected 3.4.0 >= 3.3.0", MG_API_VERSION(3, 4, 0) >= MG_API_VERSION(3, 3, 0));
-        CPPUNIT_ASSERT_MESSAGE("Expected 3.3.0 >= 3.3.0", MG_API_VERSION(3, 3, 0) >= MG_API_VERSION(3, 3, 0));
+        CPPUNIT_ASSERT_MESSAGE("Expected 4.1.0 >= 4.0.0", MG_API_VERSION(4, 1, 0) >= MG_API_VERSION(4, 0, 0));
+        CPPUNIT_ASSERT_MESSAGE("Expected 4.0.0 >= 4.0.0", MG_API_VERSION(4, 0, 0) >= MG_API_VERSION(4, 0, 0));
     }
     catch (MgException* e)
     {

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/binaryoperationform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/binaryoperationform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/binaryoperationform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.BINARYOPERATION" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/boundaryform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/boundaryform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/boundaryform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.BOUNDARY" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/bufferform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/bufferform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/bufferform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.BUFFER" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/convexhullform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/convexhullform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/convexhullform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.CONVEXHULL" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/cstransformcoordinatesform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/cstransformcoordinatesform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/cstransformcoordinatesform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -13,7 +13,7 @@
         <b>Operation:</b>
         <input type="text" name="OPERATION" value="CS.TRANSFORMCOORDINATES" size="50" ID="Text1">
         <p> Version:
-        <input type="text" name="VERSION" value="3.3.0" size="10" ID="Text2">
+        <input type="text" name="VERSION" value="4.0.0" size="10" ID="Text2">
         <p> Locale:
         <input type="text" name="LOCALE" value="en" size="10" ID="Text3">
         <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/distanceform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/distanceform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/distanceform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.DISTANCE" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/geometryinfoform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/geometryinfoform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/geometryinfoform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.GEOMETRYINFO" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/simplifyform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/simplifyform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/simplifyform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.SIMPLIFY" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/spatialpredicateform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/spatialpredicateform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/spatialpredicateform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.SPATIALPREDICATE" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/tessellateform.html
===================================================================
--- trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/tessellateform.html	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/tessellateform.html	2019-05-29 16:21:42 UTC (rev 9520)
@@ -9,7 +9,7 @@
 <b>Operation:</b>
 <input type="text" name="OPERATION" value="GEO.TESSELLATE" size="50">
 <p> Version:
-<input type="text" name="VERSION" value="3.3.0" size="10">
+<input type="text" name="VERSION" value="4.0.0" size="10">
 <p> Locale:
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:

Modified: trunk/MgDev/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -140,7 +140,7 @@
     INT32 version = m_userInfo->GetApiVersion();
     if (version != MG_API_VERSION(2,6,0) &&
         version != MG_API_VERSION(3,0,0) &&
-        version != MG_API_VERSION(3,3,0))
+        version != MG_API_VERSION(4,0,0))
     {
         throw new MgInvalidOperationVersionException(
         L"MgHttpCreateRuntimeMap.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpCsTransformCoordinates.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpCsTransformCoordinates.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpCsTransformCoordinates.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -63,7 +63,7 @@
     Ptr<MgTransform> xform = factory->GetTransform(source, target);
     
     std::string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
-    xml += "<TransformedCoordinateCollection xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"TransformedCoordinateCollection-3.3.0.xsd\">";
+    xml += "<TransformedCoordinateCollection xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"TransformedCoordinateCollection-4.0.0.xsd\">";
 
     // Output information about the target coordinate system
 
@@ -146,7 +146,7 @@
     MG_HTTP_HANDLER_TRY()
 
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpCsTransformCoordinates.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpDescribeRuntimeMap.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpDescribeRuntimeMap.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpDescribeRuntimeMap.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -120,7 +120,7 @@
     INT32 version = m_userInfo->GetApiVersion();
     if (version != MG_API_VERSION(2,6,0) &&
         version != MG_API_VERSION(3,0,0) &&
-        version != MG_API_VERSION(3,3,0))
+        version != MG_API_VERSION(4,0,0))
     {
         throw new MgInvalidOperationVersionException(
         L"MgHttpDescribeRuntimeMap.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpDescribeSchema.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpDescribeSchema.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpDescribeSchema.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -43,8 +43,8 @@
         params->GetParameterValue(MgHttpResourceStrings::reqFeatClassNames), L".");
 
     m_bSimple = false;
-    // Get simple flag (SIMPLE). Only recognize this flag for 3.3.0 and above
-    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(3, 3, 0))
+    // Get simple flag (SIMPLE). Only recognize this flag for 4.0.0 and above
+    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(4, 0, 0))
     {
         STRING simple = params->GetParameterValue(MgHttpResourceStrings::reqFeatSimple);
         if (simple.length() > 0)

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoBinaryOperation.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoBinaryOperation.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoBinaryOperation.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -121,7 +121,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoBinaryOperation.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoBoundary.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoBoundary.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoBoundary.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -108,7 +108,7 @@
 
         // There are multiple supported versions
         INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoBoundary.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoBuffer.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoBuffer.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoBuffer.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -143,7 +143,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoBuffer.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoConvexHull.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoConvexHull.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoConvexHull.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -108,7 +108,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoConvexHull.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoDistance.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoDistance.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoDistance.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -80,7 +80,7 @@
 
     std::string mbXml;
     mbXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
-    mbXml += "<UnitOfMeasure xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"UnitOfMeasure-3.3.0.xsd\">";
+    mbXml += "<UnitOfMeasure xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"UnitOfMeasure-4.0.0.xsd\">";
     mbXml += "<Value>";
     std::string sDistance;
     MgUtil::DoubleToString(distance, sDistance);
@@ -115,7 +115,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoDistance.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoSimplify.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoSimplify.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoSimplify.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -125,7 +125,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoSimplify.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoSpatialPredicate.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoSpatialPredicate.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoSpatialPredicate.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -83,7 +83,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoSpatialPredicate.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeoTessellate.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeoTessellate.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeoTessellate.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -108,7 +108,7 @@
 
         // There are multiple supported versions
         INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeoTessellate.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGeometryInfo.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGeometryInfo.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGeometryInfo.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -65,7 +65,7 @@
 
     std::string mbXml;
     mbXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
-    mbXml += "<GeometryInfo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"GeometryInfo-3.3.0.xsd\">";
+    mbXml += "<GeometryInfo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"GeometryInfo-4.0.0.xsd\">";
     mbXml += "<Area>";
     std::string sArea;
     MgUtil::DoubleToString(area, sArea);
@@ -151,7 +151,7 @@
 
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
-    if (version != MG_API_VERSION(3, 3, 0))
+    if (version != MG_API_VERSION(4, 0, 0))
     {
         throw new MgInvalidOperationVersionException(
             L"MgHttpGeometryInfo.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGetClassDefinition.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGetClassDefinition.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGetClassDefinition.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -38,8 +38,8 @@
     m_resId = params->GetParameterValue(MgHttpResourceStrings::reqFeatResourceId);
 
     m_bSimple = false;
-    // Get simple flag (SIMPLE). Only recognize this flag for 3.3.0 and above
-    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(3, 3, 0))
+    // Get simple flag (SIMPLE). Only recognize this flag for 4.0.0 and above
+    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(4, 0, 0))
     {
         STRING simple = params->GetParameterValue(MgHttpResourceStrings::reqFeatSimple);
         if (simple.length() > 0)

Modified: trunk/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -81,7 +81,7 @@
     // There are multiple supported versions
     INT32 version = m_userInfo->GetApiVersion();
     if (version != MG_API_VERSION(3,0,0) &&
-        version != MG_API_VERSION(3,3,0))
+        version != MG_API_VERSION(4,0,0))
     {
         throw new MgInvalidOperationVersionException(
         L"MgHttpGetTileProviders.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpQueryMapFeatures.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpQueryMapFeatures.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpQueryMapFeatures.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -177,7 +177,7 @@
     INT32 version = m_userInfo->GetApiVersion();
     if (version != MG_API_VERSION(1,0,0) &&
         version != MG_API_VERSION(2,6,0) &&
-        version != MG_API_VERSION(3,3,0))
+        version != MG_API_VERSION(4,0,0))
     {
         throw new MgInvalidOperationVersionException(
         L"MgHttpQueryMapFeatures.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpRequestResponseHandler.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpRequestResponseHandler.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpRequestResponseHandler.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -180,8 +180,8 @@
         m_userInfo->SetClientIp(clientIp);
     }
 
-    // Get clean json flag (CLEAN). Only recognize this flag for 3.3.0 and above
-    if (version >= MG_API_VERSION(3, 3, 0))
+    // Get clean json flag (CLEAN). Only recognize this flag for 4.0.0 and above
+    if (version >= MG_API_VERSION(4, 0, 0))
     {
         STRING cleanJson = hrParam->GetParameterValue(MgHttpResourceStrings::reqClean);
         if (cleanJson.length() > 0)
@@ -244,7 +244,7 @@
         version != MG_API_VERSION(1,2,0) &&
         version != MG_API_VERSION(2,0,0) &&
         version != MG_API_VERSION(2,2,0) &&
-        version != MG_API_VERSION(3,3,0))
+        version != MG_API_VERSION(4,0,0))
     {
         throw new MgInvalidOperationVersionException(
         L"MgHttpRequestResponseHandler.ValidateOperationVersion", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: trunk/MgDev/Web/src/HttpHandler/HttpSelectFeatures.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpSelectFeatures.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpSelectFeatures.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -55,8 +55,8 @@
             m_bEnablePrecision = true;
         }
     }
-    // Get transform flag (TRANSFORMTO). Only recognize this flag for 3.3.0 and above
-    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(3, 3, 0))
+    // Get transform flag (TRANSFORMTO). Only recognize this flag for 4.0.0 and above
+    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(4, 0, 0))
     {
         m_transformTo = params->GetParameterValue(MgHttpResourceStrings::reqGeoTransformTo);
     }

Modified: trunk/MgDev/Web/src/HttpHandler/HttpSelectFeaturesSpatially.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpSelectFeaturesSpatially.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/HttpSelectFeaturesSpatially.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -66,8 +66,8 @@
         }
     }
 
-    // Get transform flag (TRANSFORMTO). Only recognize this flag for 3.3.0 and above
-    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(3, 3, 0))
+    // Get transform flag (TRANSFORMTO). Only recognize this flag for 4.0.0 and above
+    if (m_userInfo->GetApiVersion() >= MG_API_VERSION(4, 0, 0))
     {
         m_transformTo = params->GetParameterValue(MgHttpResourceStrings::reqGeoTransformTo);
     }

Modified: trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/HttpHandler/XmlJsonConvert.cpp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -908,7 +908,7 @@
     s_elementPathTypeMap["/TileProviderList/TileProvider/ConnectionProperties/ConnectionProperty/@Required"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/TileProviderList/TileProvider/ConnectionProperties/ConnectionProperty/@Protected"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/TileProviderList/TileProvider/ConnectionProperties/ConnectionProperty/@Enumerable"] = XML_DATA_TYPE_BOOLEAN;
-    //FeatureSchemaCollection-3.3.0.xsd
+    //FeatureSchemaCollection-4.0.0.xsd
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/IsAbstract"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/IsComputed"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/Properties/Property/PropertyType"] = XML_DATA_TYPE_NUM_INT;
@@ -926,7 +926,7 @@
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/Properties/Property/HasMeasure"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/Properties/Property/DefaultImageXSize"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/Properties/Property/DefaultImageYSize"] = XML_DATA_TYPE_NUM_INT;
-    //ClassDefinition-3.3.0.xsd
+    //ClassDefinition-4.0.0.xsd
     s_elementPathTypeMap["/ClassDefinition/IsAbstract"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/ClassDefinition/IsComputed"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/ClassDefinition/Properties/Property/PropertyType"] = XML_DATA_TYPE_NUM_INT;
@@ -944,9 +944,9 @@
     s_elementPathTypeMap["/ClassDefinition/Properties/Property/HasMeasure"] = XML_DATA_TYPE_BOOLEAN;
     s_elementPathTypeMap["/ClassDefinition/Properties/Property/DefaultImageXSize"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/ClassDefinition/Properties/Property/DefaultImageYSize"] = XML_DATA_TYPE_NUM_INT;
-    //UnitOfMeasure-3.3.0.xsd
+    //UnitOfMeasure-4.0.0.xsd
     s_elementPathTypeMap["/UnitOfMeasure/Value"] = XML_DATA_TYPE_NUM_DOUBLE;
-    //GeometryInfo-3.3.0.xsd
+    //GeometryInfo-4.0.0.xsd
     s_elementPathTypeMap["/GeometryInfo/Area"] = XML_DATA_TYPE_NUM_DOUBLE;
     s_elementPathTypeMap["/GeometryInfo/Dimension"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/GeometryInfo/Length"] = XML_DATA_TYPE_NUM_DOUBLE;
@@ -960,7 +960,7 @@
     s_elementPathTypeMap["/GeometryInfo/Envelope/UpperRight/Y"] = XML_DATA_TYPE_NUM_DOUBLE;
     s_elementPathTypeMap["/GeometryInfo/Centroid/X"] = XML_DATA_TYPE_NUM_DOUBLE;
     s_elementPathTypeMap["/GeometryInfo/Centroid/Y"] = XML_DATA_TYPE_NUM_DOUBLE;
-    //TransformedCoordinateCollection-3.3.0.xsd
+    //TransformedCoordinateCollection-4.0.0.xsd
     s_elementPathTypeMap["/TransformedCoordinateCollection/CoordinateSystem/EpsgCode"] = XML_DATA_TYPE_NUM_INT;
     s_elementPathTypeMap["/TransformedCoordinateCollection/TransformedCoordinate/X"] = XML_DATA_TYPE_NUM_DOUBLE;
     s_elementPathTypeMap["/TransformedCoordinateCollection/TransformedCoordinate/Y"] = XML_DATA_TYPE_NUM_DOUBLE;
@@ -1049,7 +1049,7 @@
     //BatchPropertyCollection-1.0.0.xsd
     s_multiElementPaths.insert("/BatchPropertyCollection/PropertyCollection");
     s_multiElementPaths.insert("/BatchPropertyCollection/PropertyCollection/Property");
-    //ClassDefinition-3.3.0.xsd
+    //ClassDefinition-4.0.0.xsd
     s_multiElementPaths.insert("/ClassDefinition/Properties/Property");
     s_multiElementPaths.insert("/ClassDefinition/Properties/Property/SpecificGeometryTypes/Type");
     //DataStoreList-1.0.0.xsd
@@ -1084,7 +1084,7 @@
     s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider");
     s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty");
     s_multiElementPaths.insert("/FeatureProviderRegistry/FeatureProvider/ConnectionProperties/ConnectionProperty/Value");
-    //FeatureSchemaCollection-3.3.0.xsd
+    //FeatureSchemaCollection-4.0.0.xsd
     s_multiElementPaths.insert("/FeatureSchemaCollection/FeatureSchema");
     s_multiElementPaths.insert("/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition");
     s_multiElementPaths.insert("/FeatureSchemaCollection/FeatureSchema/Classes/ClassDefinition/Properties/Property");
@@ -1150,7 +1150,7 @@
     //UserList-1.0.0.xsd
     s_multiElementPaths.insert("/UserList/User");
     s_multiElementPaths.insert("/UserList/Group");
-    //TransformedCoordinateCollection-3.3.0.xsd
+    //TransformedCoordinateCollection-4.0.0.xsd
     s_multiElementPaths.insert("/TransformedCoordinateCollection/TransformedCoordinate");
     //Miscellaneous MapGuide response types that don't have a formal schema
     s_multiElementPaths.insert("/FeatureInformation/FeatureSet/Layer");

Modified: trunk/MgDev/Web/src/mapadmin/resizableadmin.php
===================================================================
--- trunk/MgDev/Web/src/mapadmin/resizableadmin.php	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/mapadmin/resizableadmin.php	2019-05-29 16:21:42 UTC (rev 9520)
@@ -17,7 +17,7 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-    define( 'SITE_ADMINISTRATOR_VERSION', "3.3.0.0" );
+    define( 'SITE_ADMINISTRATOR_VERSION', "4.0.0.0" );
 
     define( 'APP_TITLE',        "MapGuide Site Administrator" );
     define( 'APP_LOGO',         "" );

Modified: trunk/MgDev/Web/src/mapviewerjava/ajaxviewerabout.jsp
===================================================================
--- trunk/MgDev/Web/src/mapviewerjava/ajaxviewerabout.jsp	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/mapviewerjava/ajaxviewerabout.jsp	2019-05-29 16:21:42 UTC (rev 9520)
@@ -32,7 +32,7 @@
 String titleBar = product + " Viewer";
 String serverTitle = product + " Server";
 String viewerTitle = product + " Viewer";
-String viewerVersion = "3.3.0.0";
+String viewerVersion = "4.0.0.0";
 String serverVersion;
 %>
 

Modified: trunk/MgDev/Web/src/mapviewernet/ajaxviewerabout.aspx
===================================================================
--- trunk/MgDev/Web/src/mapviewernet/ajaxviewerabout.aspx	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/mapviewernet/ajaxviewerabout.aspx	2019-05-29 16:21:42 UTC (rev 9520)
@@ -32,7 +32,7 @@
 String titleBar = product + " Viewer";
 String serverTitle = product + " Server";
 String viewerTitle = product + " Viewer";
-String viewerVersion = "3.3.0.0";
+String viewerVersion = "4.0.0.0";
 String serverVersion = "##Unknown";
 </script>
 

Modified: trunk/MgDev/Web/src/mapviewerphp/ajaxviewerabout.php
===================================================================
--- trunk/MgDev/Web/src/mapviewerphp/ajaxviewerabout.php	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/Web/src/mapviewerphp/ajaxviewerabout.php	2019-05-29 16:21:42 UTC (rev 9520)
@@ -21,7 +21,7 @@
 include 'product.php';
 include 'constants.php';
 
-define('VIEWER_VERSION', "3.3.0.0" );
+define('VIEWER_VERSION', "4.0.0.0" );
 
 $titleBar = $product . " Viewer";
 $serverTitle = $product . " Server";

Modified: trunk/MgDev/configure.in
===================================================================
--- trunk/MgDev/configure.in	2019-05-29 15:41:30 UTC (rev 9519)
+++ trunk/MgDev/configure.in	2019-05-29 16:21:42 UTC (rev 9520)
@@ -4,7 +4,7 @@
 # Variables
 # Following are the makefile directories
 #----------------------------------------------------------------------
-AC_INIT(mapguide,3.3.0,http://mapguide.osgeo.org)
+AC_INIT(mapguide,4.0.0,http://mapguide.osgeo.org)
 AC_CONFIG_SRCDIR(configure.in)
 AM_INIT_AUTOMAKE
 AM_INIT_AUTOMAKE([1.9 tar-pax subdir-objects])



More information about the mapguide-commits mailing list