[mapguide-commits] r6288 - in sandbox/adsk/vik/Common: CoordinateSystem Foundation Foundation/Data Foundation/Exception Foundation/System Geometry Geometry/CoordinateSystem

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Dec 5 12:52:42 EST 2011


Author: traianstanev
Date: 2011-12-05 09:52:42 -0800 (Mon, 05 Dec 2011)
New Revision: 6288

Added:
   sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.c
   sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.h
   sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.cpp
   sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.h
   sandbox/adsk/vik/Common/Foundation/System/Mutex.h
Modified:
   sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCategoryDictionary.cpp
   sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCommon.h
   sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.cpp
   sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.h
   sandbox/adsk/vik/Common/CoordinateSystem/MentorDictionary.h
   sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.cpp
   sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.h
   sandbox/adsk/vik/Common/Foundation/Data/ByteReader.cpp
   sandbox/adsk/vik/Common/Foundation/Data/ByteReader.h
   sandbox/adsk/vik/Common/Foundation/Data/ByteSink.cpp
   sandbox/adsk/vik/Common/Foundation/Data/ByteSink.h
   sandbox/adsk/vik/Common/Foundation/Data/ByteSource.cpp
   sandbox/adsk/vik/Common/Foundation/Data/ByteSource.h
   sandbox/adsk/vik/Common/Foundation/Data/Collection.h
   sandbox/adsk/vik/Common/Foundation/Data/DateTime.cpp
   sandbox/adsk/vik/Common/Foundation/Data/DateTime.h
   sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.cpp
   sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.h
   sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.cpp
   sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.h
   sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.cpp
   sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.h
   sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.cpp
   sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.h
   sandbox/adsk/vik/Common/Foundation/Data/StringCollection.cpp
   sandbox/adsk/vik/Common/Foundation/Data/StringCollection.h
   sandbox/adsk/vik/Common/Foundation/Data/StringProperty.cpp
   sandbox/adsk/vik/Common/Foundation/Data/StringProperty.h
   sandbox/adsk/vik/Common/Foundation/Exception/Exception.cpp
   sandbox/adsk/vik/Common/Foundation/Exception/Exception.h
   sandbox/adsk/vik/Common/Foundation/Foundation.h
   sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj
   sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj.filters
   sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.cpp
   sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.h
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.cpp
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.h
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.cpp
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.h
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.cpp
   sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.h
   sandbox/adsk/vik/Common/Foundation/System/ClassFactory.cpp
   sandbox/adsk/vik/Common/Foundation/System/ClassFactory.h
   sandbox/adsk/vik/Common/Foundation/System/Configuration.cpp
   sandbox/adsk/vik/Common/Foundation/System/Configuration.h
   sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.cpp
   sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.h
   sandbox/adsk/vik/Common/Foundation/System/Disposable.cpp
   sandbox/adsk/vik/Common/Foundation/System/Disposable.h
   sandbox/adsk/vik/Common/Foundation/System/FileUtil.cpp
   sandbox/adsk/vik/Common/Foundation/System/FileUtil.h
   sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.cpp
   sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.h
   sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.cpp
   sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.h
   sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.cpp
   sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.h
   sandbox/adsk/vik/Common/Foundation/System/Object.cpp
   sandbox/adsk/vik/Common/Foundation/System/PacketParser.cpp
   sandbox/adsk/vik/Common/Foundation/System/PacketParser.h
   sandbox/adsk/vik/Common/Foundation/System/Resources.cpp
   sandbox/adsk/vik/Common/Foundation/System/Resources.h
   sandbox/adsk/vik/Common/Foundation/System/Serializable.h
   sandbox/adsk/vik/Common/Foundation/System/Stream.cpp
   sandbox/adsk/vik/Common/Foundation/System/Stream.h
   sandbox/adsk/vik/Common/Foundation/System/StreamData.cpp
   sandbox/adsk/vik/Common/Foundation/System/StreamData.h
   sandbox/adsk/vik/Common/Foundation/System/StreamHelper.cpp
   sandbox/adsk/vik/Common/Foundation/System/StreamParser.cpp
   sandbox/adsk/vik/Common/Foundation/System/StreamParser.h
   sandbox/adsk/vik/Common/Foundation/System/StreamReader.cpp
   sandbox/adsk/vik/Common/Foundation/System/StreamReader.h
   sandbox/adsk/vik/Common/Foundation/System/StreamWriter.cpp
   sandbox/adsk/vik/Common/Foundation/System/StreamWriter.h
   sandbox/adsk/vik/Common/Foundation/System/Util.cpp
   sandbox/adsk/vik/Common/Foundation/System/Util.h
   sandbox/adsk/vik/Common/Foundation/System/XmlDefs.h
   sandbox/adsk/vik/Common/Foundation/System/XmlUtil.cpp
   sandbox/adsk/vik/Common/Foundation/System/XmlUtil.h
   sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.cpp
   sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.h
   sandbox/adsk/vik/Common/Geometry/AgfStream.cpp
   sandbox/adsk/vik/Common/Geometry/AgfStream.h
   sandbox/adsk/vik/Common/Geometry/Coordinate.h
   sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.h
   sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h
   sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemFactory.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateXY.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateXY.h
   sandbox/adsk/vik/Common/Geometry/CoordinateXYM.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateXYM.h
   sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.h
   sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.cpp
   sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.h
   sandbox/adsk/vik/Common/Geometry/CurvePolygon.cpp
   sandbox/adsk/vik/Common/Geometry/CurvePolygon.h
   sandbox/adsk/vik/Common/Geometry/CurveString.cpp
   sandbox/adsk/vik/Common/Geometry/CurveString.h
   sandbox/adsk/vik/Common/Geometry/Envelope.cpp
   sandbox/adsk/vik/Common/Geometry/Envelope.h
   sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj
   sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj.filters
   sandbox/adsk/vik/Common/Geometry/GeometryClassFactory.cpp
   sandbox/adsk/vik/Common/Geometry/GeometryUtil.cpp
   sandbox/adsk/vik/Common/Geometry/GeometryUtil.h
   sandbox/adsk/vik/Common/Geometry/LineString.cpp
   sandbox/adsk/vik/Common/Geometry/LineString.h
   sandbox/adsk/vik/Common/Geometry/Measure.h
   sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.cpp
   sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.h
   sandbox/adsk/vik/Common/Geometry/MultiCurveString.cpp
   sandbox/adsk/vik/Common/Geometry/MultiCurveString.h
   sandbox/adsk/vik/Common/Geometry/MultiGeometry.cpp
   sandbox/adsk/vik/Common/Geometry/MultiGeometry.h
   sandbox/adsk/vik/Common/Geometry/MultiLineString.cpp
   sandbox/adsk/vik/Common/Geometry/MultiLineString.h
   sandbox/adsk/vik/Common/Geometry/MultiPoint.cpp
   sandbox/adsk/vik/Common/Geometry/MultiPoint.h
   sandbox/adsk/vik/Common/Geometry/MultiPolygon.cpp
   sandbox/adsk/vik/Common/Geometry/MultiPolygon.h
   sandbox/adsk/vik/Common/Geometry/Point.cpp
   sandbox/adsk/vik/Common/Geometry/Point.h
   sandbox/adsk/vik/Common/Geometry/Polygon.cpp
   sandbox/adsk/vik/Common/Geometry/Polygon.h
Log:
Initial submission of "light" build of MgFoundation and MgGeometry. Dependencies on ACE, xml have been ifdefed out. The MgMdfModel dependency was removed by duplicating the UTF8 string conversion code. ACE mutexes replaced by MapGuide's own mutex class. The CoordinateSystem code is still not compiling cleanly, but that will follow -- some required temp file utilities are still missing.

Modified: sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCategoryDictionary.cpp
===================================================================
--- sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCategoryDictionary.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCategoryDictionary.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -302,6 +302,8 @@
     {
         throw new MgOutOfMemoryException(L"MgCoordinateSystemCategoryDictionary.RewriteFile", __LINE__, __WFILE__, NULL, L"", NULL);
     }
+    remove(sz_msPath);
+    rename(tempName, sz_msPath);
     MgFileUtil::DeleteFile( MgUtil::MultiByteToWideChar(sz_msPath) );
     MgFileUtil::RenameFile( tempName, MgUtil::MultiByteToWideChar(sz_msPath) );
 

Modified: sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCommon.h
===================================================================
--- sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCommon.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/CoordinateSystem/CoordSysCommon.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -42,4 +42,6 @@
 
 #include "namestruct.h" //for CSystemNameDescriptionMap
 
+#include "SmartCriticalClass.h"
+
 #endif //_CCOORDINATESYSTEMCOMMON_H_

Modified: sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.cpp
===================================================================
--- sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -62,7 +62,7 @@
 ///
 void CCoordinateSystemWktFailureCache::Clear()
 {
-    ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex));
+    AutoMutexLocker lock(m_mutex);
 
     for (CWktExceptionMap::iterator i = m_wktExceptionMap.begin();
         i != m_wktExceptionMap.end(); ++i)
@@ -98,7 +98,7 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 
-    ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex));
+    AutoMutexLocker lock(m_mutex);
 
     SAFE_RELEASE(m_wktExceptionMap[key]);
     m_wktExceptionMap[key] = SAFE_ADDREF(mgException);
@@ -128,7 +128,7 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 
-    ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, false));
+    AutoMutexLocker lock(m_mutex);
 
     CWktExceptionMap::iterator mapItr = m_wktExceptionMap.find (key);
     hasKey = (mapItr != m_wktExceptionMap.end ());
@@ -158,7 +158,7 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 
-    ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, NULL));
+    AutoMutexLocker lock(m_mutex);
 
     return SAFE_ADDREF(m_wktExceptionMap[key]);
 }

Modified: sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.h
===================================================================
--- sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/CoordinateSystem/CoordSysWktFailureCache.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -53,7 +53,7 @@
 
     static CCoordinateSystemWktFailureCache sm_wktFailureCache;
 
-    ACE_Recursive_Thread_Mutex m_mutex;
+    CustomThreadMutex m_mutex;
     CWktExceptionMap m_wktExceptionMap;
 };
 

Modified: sandbox/adsk/vik/Common/CoordinateSystem/MentorDictionary.h
===================================================================
--- sandbox/adsk/vik/Common/CoordinateSystem/MentorDictionary.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/CoordinateSystem/MentorDictionary.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -244,7 +244,7 @@
         Ptr<MgDisposableCollection> filteredCollection = new MgDisposableCollection();
         for(std::vector<MgCoordinateSystemFilter*>::size_type j = 0; j < filterCount; j++)
         {
-            Ptr<MgDisposable> disposableItem = toBeFiltered->GetItem(j);
+            Ptr<MgDisposable> disposableItem = toBeFiltered->GetItem((INT32)j);
             T* mgCsItem = dynamic_cast<T*>(disposableItem.p);
             if (NULL == mgCsItem)
                 throw new MgInvalidArgumentException(L"MentorDictionary.FilterDefinitions", __LINE__, __WFILE__, NULL, L"", NULL);

Modified: sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -194,7 +194,7 @@
     return m_dCollection->IndexOf(value);
 }
 
-
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 /// <summary>
 /// Creates an XML document representing the collection.
@@ -252,8 +252,8 @@
         this->Add(prop);
     }
 }
+#endif //WANT_ACE
 
-
 /////////////////////////////////////////////////////////////////
 /// <summary>
 /// Disposes the object.
@@ -263,9 +263,9 @@
     delete this;
 }
 
-
 //////////////////////////////////////////////////////////////////
 // Convert to XML
+#if WANT_ACE
 void MgBatchPropertyCollection::ToXml(string& str)
 {
     INT32 count = this->GetCount();
@@ -275,3 +275,4 @@
         propDefCol->ToXml(str);
     }
 }
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/BatchPropertyCollection.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -298,6 +298,7 @@
     virtual INT32 IndexOf(const MgPropertyDefinition* value) const;
 
 EXTERNAL_API:
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Creates an XML document representing the collection.
@@ -309,6 +310,7 @@
     /// A pointer to an MgByteReader object.
     ///
     virtual MgByteReader* ToXml();
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////
     /// \brief
@@ -320,6 +322,8 @@
     virtual ~MgBatchPropertyCollection();
 
 INTERNAL_API:
+
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Serializes data to a TCP/IP stream.
@@ -340,6 +344,7 @@
 
     /// Convert to XML
     void ToXml(string& xmlStr);
+#endif //WANT_ACE
 
 protected:
 

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteReader.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteReader.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteReader.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 MG_IMPL_DYNCREATE(MgByteReader);
 
 //////////////////////////////////////////////////////////////////
@@ -264,3 +266,5 @@
     CHECKNULL(m_byteSource, L"MgByteReader.Rewind");
     m_byteSource->GetSourceImpl()->Rewind();
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteReader.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteReader.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteReader.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_BYTE_READER_H_
 #define MG_BYTE_READER_H_
 
+#if WANT_ACE
+
 /// \defgroup MgByteReader MgByteReader
 /// \ingroup Common_Module
 /// \{
@@ -386,4 +388,6 @@
 };
 /// \}
 
+#endif //WANT_ACE
+
 #endif // MG_BYTE_READER_H_

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteSink.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteSink.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteSink.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #include "Foundation.h"
 #include <typeinfo>
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Default Constructor
@@ -115,6 +117,7 @@
 ///</summary>
 ///<param name="stream">Destination ACE stream</param>
 ///
+#if WANT_ACE
 void MgByteSink::ToStream(ACE_SOCK_Stream* stream)
 {
     unsigned char bytes[4096];
@@ -130,8 +133,8 @@
                 __LINE__, __WFILE__, NULL, L"", NULL);
         }
     }
-
 }
+#endif
 
 /// <summary>
 /// Sends the content of the byte reader to an MgByte object.
@@ -273,3 +276,5 @@
 
     MG_THROW()
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteSink.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteSink.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteSink.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_BYTE_SINK_H
 #define MG_BYTE_SINK_H
 
+#if WANT_ACE
+
 /// \defgroup MgByteSink MgByteSink
 /// \ingroup Common_Module
 /// \{
@@ -148,7 +150,9 @@
     /// \param stream
     /// Destination ACE stream
     ///
+#if WANT_ACE
     void ToStream(ACE_SOCK_Stream* stream);
+#endif
 
     //////////////////////////////////////////////////////////////////
     /// \brief
@@ -197,4 +201,6 @@
 
 #define BSINK_BUFFER_SIZE       (1*1024*1024)
 
+#endif //WANT_ACE
+
 #endif

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteSource.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteSource.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteSource.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Default constructor for ByteSource object. Needed for Linux build
@@ -175,3 +177,5 @@
 {
     return m_sourceImpl;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/ByteSource.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/ByteSource.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/ByteSource.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_BYTE_SOURCE_H
 #define MG_BYTE_SOURCE_H
 
+#if WANT_ACE
+
 /// \defgroup MgByteSource MgByteSource
 /// \ingroup Common_Module
 /// \{
@@ -251,4 +253,6 @@
 };
 /// \}
 
+#endif //WANT_ACE
+
 #endif // MG_BYTE_SOURCE_H

Modified: sandbox/adsk/vik/Common/Foundation/Data/Collection.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/Collection.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/Collection.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -97,6 +97,7 @@
     virtual void RemoveAt(INT32 index) = 0;
 
 EXTERNAL_API:
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Creates an XML document representing the collection.
@@ -105,7 +106,7 @@
     /// A pointer to an MgByteReader object.
     ///
     virtual MgByteReader* ToXml() = 0;
-
+#endif //WANT_ACE
 INTERNAL_API:
     //////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Foundation/Data/DateTime.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/DateTime.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/DateTime.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -15,6 +15,8 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+#if WANT_ACE
+
 #include <wchar.h>
 #include "Foundation.h"
 #include "ace/Date_Time.h"
@@ -1242,3 +1244,6 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 }
+
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/DateTime.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/DateTime.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/DateTime.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGDATETIME_H_
 #define MGDATETIME_H_
 
+#if WANT_ACE
+
 /// \defgroup MgDateTime MgDateTime
 /// \ingroup Common_Module
 /// \{
@@ -636,4 +638,6 @@
 };
 /// \}
 
+#endif //WANT_ACE
+
 #endif

Modified: sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -403,6 +403,7 @@
     return -1;
 }
 
+#if WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 /// <summary>
@@ -455,6 +456,7 @@
         Add(obj);
     }
 }
+#endif //WANT_ACE
 
 
 //////////////////////////////////////////////////////////////////

Modified: sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/NamedCollection.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -235,6 +235,7 @@
     ///
     virtual INT32 IndexOf(CREFSTRING name) const;
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Creates an XML document representing the collection.
@@ -261,8 +262,8 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
-
     MgNamedCollection(bool allowDuplicate, bool caseSensitive);
     MgNamedCollection(bool caseSensitive = true);
     bool GetAllowDuplicate();

Modified: sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -74,6 +74,7 @@
     }
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Serialize data to TCP/IP stream
@@ -103,3 +104,4 @@
 
     stream->GetBoolean(m_bIsNull);
 }
+#endif WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/NullableProperty.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -83,7 +83,7 @@
     bool IsNull();
 
 INTERNAL_API:
-
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -101,7 +101,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
-
+#endif //WANT_ACE
 protected:
 
     /// Constructor

Modified: sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -267,6 +267,7 @@
 }
 
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 /// <summary>
 /// Creates an XML document representing the collection.
@@ -332,8 +333,8 @@
         this->Add(prop);
     }
 }
+#endif
 
-
 /////////////////////////////////////////////////////////////////
 /// <summary>
 /// Disposes the object.

Modified: sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/PropertyCollection.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -367,6 +367,7 @@
 
 EXTERNAL_API:
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Creates an XML document representing the collection.
@@ -378,6 +379,7 @@
     /// A pointer to an MgByteReader object.
     ///
     virtual MgByteReader* ToXml();
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////
     /// \brief
@@ -413,6 +415,7 @@
     ///
     virtual MgProperty* FindItem(CREFSTRING name);
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serializes data to a TCP/IP stream.
@@ -430,6 +433,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     /// Convert to XML
     void ToXml(string& str, bool includeType, string rootElmName = "Property");

Modified: sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -148,6 +148,7 @@
     str += "</" + rootElmName + ">";
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Serialize data to TCP/IP stream
@@ -192,7 +193,7 @@
     stream->GetBoolean(isDeleted);
     m_isDeleted = isDeleted;
 }
-
+#endif //WANT_ACE
 /////////////////////////////////////////////////////////////////
 /// <summary>
 /// Marks the property definition for deletion.

Modified: sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/PropertyDefinition.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -222,6 +222,7 @@
     ///
     MgPropertyDefinition();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -239,6 +240,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Foundation/Data/StringCollection.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/StringCollection.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/StringCollection.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -217,6 +217,7 @@
     return index;
 }
 
+#if WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 /// <summary>
@@ -244,7 +245,6 @@
     return MgUtil::GetByteReader(xmlStr, (STRING*)&MgMimeType::Xml);
 }
 
-
 //////////////////////////////////////////////////////////////////
 /// <summary>
 /// Serialize data to TCP/IP stream
@@ -277,8 +277,8 @@
         this->Add(str);
     }
 }
+#endif //WANT_ACE
 
-
 //////////////////////////////////////////////////////////////////
 /// <summary>
 /// Disposes the object.

Modified: sandbox/adsk/vik/Common/Foundation/Data/StringCollection.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/StringCollection.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/StringCollection.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -293,6 +293,7 @@
     virtual INT32 IndexOf(CREFSTRING value);
 
 EXTERNAL_API:
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Creates an XML document representing the collection.
@@ -304,6 +305,7 @@
     /// A pointer to an MgByteReader object.
     ///
     virtual MgByteReader* ToXml();
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////
     /// \brief
@@ -315,6 +317,8 @@
     virtual ~MgStringCollection();
 
 INTERNAL_API:
+
+#if WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Serializes data to a TCP/IP stream.
@@ -332,7 +336,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
-
+#endif //WANT_ACE
     //////////////////////////////////////////////////////////
     /// \brief
     /// Builds a log friendly string representation

Modified: sandbox/adsk/vik/Common/Foundation/Data/StringProperty.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/StringProperty.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/StringProperty.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -144,6 +144,7 @@
     }
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Serialize data to TCP/IP stream
@@ -175,3 +176,4 @@
 
     stream->GetString(m_value);
 }
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/Data/StringProperty.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Data/StringProperty.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Data/StringProperty.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -143,6 +143,7 @@
     ///
     MgStringProperty();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serializes data to a TCP/IP stream.
@@ -160,6 +161,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
 protected:
 

Modified: sandbox/adsk/vik/Common/Foundation/Exception/Exception.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Exception/Exception.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Exception/Exception.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -90,6 +90,7 @@
 
     if (locale.empty())
     {
+#if WANT_ACE
         MG_TRY()
 
         MgConfiguration* configuration = MgConfiguration::GetInstance();
@@ -104,7 +105,7 @@
         }
 
         MG_CATCH_AND_RELEASE()
-
+#endif //WANT_ACE
         if (locale.empty())
         {
             locale = MgResources::DefaultMessageLocale;
@@ -195,6 +196,7 @@
     }
 }
 
+#if WANT_ACE
 ///////////////////////////////////////////////////////////////////////////////
 /// \brief
 /// Serialize data to TCP/IP stream.
@@ -234,7 +236,7 @@
     stream->GetString(m_details);
     stream->GetString(m_stackTrace);
 }
-
+#endif //WANT_ACE
 ///////////////////////////////////////////////////////////////////////////////
 /// \brief
 /// Format a message with the specified arguments.
@@ -247,16 +249,16 @@
     assert(NULL != arguments);
     STRING message;
 
+#if WANT_ACE
     MG_TRY()
-
     MgResources* resources = MgResources::GetInstance();
 
     if (NULL != resources)
     {
         message = resources->FormatMessage(resourceStr, arguments);
     }
-
     MG_CATCH_AND_RELEASE()
+#endif
 
     return message;
 }
@@ -271,6 +273,7 @@
     STRING message;
     MgResources* resources = NULL;
 
+#if WANT_ACE
     MG_TRY()
 
     resources = MgResources::GetInstance();
@@ -311,7 +314,7 @@
 
         MG_CATCH_AND_RELEASE()
     }
-
+#endif
     return message;
 }
 
@@ -332,6 +335,7 @@
     {
         const INT32 startIndex = stackSize - 1;
 
+#if WANT_ACE
         MG_TRY()
 
         MgResources* resources = MgResources::GetInstance();
@@ -357,6 +361,7 @@
         }
 
         MG_CATCH_AND_RELEASE()
+#endif //WANT_ACE
 
         if (stackTrace.empty())
         {
@@ -395,6 +400,7 @@
     {
         const INT32 startIndex = stackSize - 1;
 
+#if WANT_ACE
         MG_TRY()
 
         MgResources* resources = MgResources::GetInstance();
@@ -421,6 +427,7 @@
         }
 
         MG_CATCH_AND_RELEASE()
+#endif //WANT_ACE
     }
 
     return stackTrace;

Modified: sandbox/adsk/vik/Common/Foundation/Exception/Exception.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Exception/Exception.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Exception/Exception.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -184,7 +184,7 @@
     virtual ~MgException() throw();
 
 INTERNAL_API:
-
+#if WANT_ACE
     ///////////////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream.
@@ -202,7 +202,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream) throw();
-
+#endif
 protected:
 
     ///////////////////////////////////////////////////////////////////////////

Modified: sandbox/adsk/vik/Common/Foundation/Foundation.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Foundation.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Foundation.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,14 @@
 #ifndef MG_FOUNDATION_H
 #define MG_FOUNDATION_H
 
+//#define WANT_ACE
+//#define WANT_XERCES
+
+//dll interface
+#pragma warning(disable: 4251)
+
+
+#if WANT_ACE
 // Enable logging, our log files use this
 #ifdef ACE_NLOGGING
 #undef ACE_NLOGGING
@@ -68,6 +76,15 @@
 #include "ace/Process_Manager.h"
 #include "ace/Date_Time.h"
 
+#else //WANT_ACE
+
+#include <assert.h>
+#define ACE_TRACE(x)
+#define ACE_ASSERT assert
+#undef GetClassName
+#define ACE_DEBUG(X)
+#endif
+
 #undef GetObject
 #include "FoundationDefs.h"
 #include "System/FoundationClassId.h"
@@ -98,7 +115,7 @@
 #include "System/Stream.h"
 #include "System/StreamParser.h"
 
-#include "../MdfModel/UnicodeString.h"
+#include "System/FoundationUnicodeString.h"
 #include "Data/Collection.h"
 #include "System/DisposableCollection.h"
 #include "Data/StringCollection.h"
@@ -180,6 +197,7 @@
 #include "System/ByteSourceFileImpl.h"
 #include "System/ByteSourceMemoryImpl.h"
 
+#if WANT_ACE
 #if !defined (ACE_HAS_WCHAR)
 #error Please define ACE_HAS_WCHAR
 #endif
@@ -216,6 +234,8 @@
 
 # endif /* ACE_LITTLE_ENDIAN */
 
+#endif //WANT_ACE
+
 // Flag used for SIGPIPE handling
 #ifdef _WIN32
     static const int MG_MSG_NOSIGNAL = 0;

Modified: sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj	2011-12-05 17:52:42 UTC (rev 6288)
@@ -90,17 +90,18 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\MdfModel;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\dbxml\xerces-c-src\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>ACEd.lib;xerces-c_3mgD.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)MgFoundationd.dll</OutputFile>
       <AdditionalLibraryDirectories>..\..\Oem\ACE\ACE_wrappers\lib;..\..\Oem\dbxml\xerces-c-src\Build\Win32\VC10\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -116,17 +117,18 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\MdfModel;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\dbxml\xerces-c-src\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;__LITTLE_ENDIAN__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;__LITTLE_ENDIAN__;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>ACEd.lib;xerces-c_3mgD.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)MgFoundationd.dll</OutputFile>
       <AdditionalLibraryDirectories>..\..\Oem\ACE\ACE_wrappers\lib64;..\..\Oem\dbxml\xerces-c-src\Build\x64\VC10\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -139,15 +141,16 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories>..\MdfModel;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\dbxml\xerces-c-src\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>Async</ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>ACE.lib;xerces-c_3mg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)MgFoundation.dll</OutputFile>
       <AdditionalLibraryDirectories>..\..\Oem\ACE\ACE_wrappers\lib;..\..\Oem\dbxml\xerces-c-src\Build\Win32\VC10\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -165,15 +168,16 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories>..\MdfModel;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\dbxml\xerces-c-src\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;__LITTLE_ENDIAN__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FOUNDATION_EXPORTS;__LITTLE_ENDIAN__;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>Async</ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>ACE.lib;xerces-c_3mg.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)MgFoundation.dll</OutputFile>
       <AdditionalLibraryDirectories>..\..\Oem\ACE\ACE_wrappers\lib64;..\..\Oem\dbxml\xerces-c-src\Build\x64\VC10\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -658,6 +662,7 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClCompile>
+    <ClCompile Include="System\ConvertUTF.c" />
     <ClCompile Include="System\Disposable.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -682,6 +687,7 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClCompile>
+    <ClCompile Include="System\FoundationUnicodeString.cpp" />
     <ClCompile Include="System\GuardDisposable.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -872,6 +878,9 @@
     <ClInclude Include="System\ConfigurationSection.h" />
     <ClInclude Include="System\ConfigurationSectionCollection.h" />
     <ClInclude Include="System\ControlPacket.h" />
+    <ClInclude Include="System\ConvertUTF.h" />
+    <ClInclude Include="System\FoundationUnicodeString.h" />
+    <ClInclude Include="System\Mutex.h" />
     <ClInclude Include="System\Disposable.h" />
     <ClInclude Include="System\DisposableCollection.h" />
     <ClInclude Include="System\FileUtil.h" />
@@ -912,9 +921,6 @@
       <Project>{a621c011-61bf-43a8-9d80-bc35858ddcfa}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
-    <ProjectReference Include="..\MdfModel\MdfModel.vcxproj">
-      <Project>{c50254f2-654a-48de-af5b-20605aef8d10}</Project>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">

Modified: sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj.filters
===================================================================
--- sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj.filters	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/Foundation.vcxproj.filters	2011-12-05 17:52:42 UTC (rev 6288)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
     <Filter Include="Exception">
@@ -304,6 +304,12 @@
       <Filter>System</Filter>
     </ClCompile>
     <ClCompile Include="FoundationBuild.cpp" />
+    <ClCompile Include="System\FoundationUnicodeString.cpp">
+      <Filter>System</Filter>
+    </ClCompile>
+    <ClCompile Include="System\ConvertUTF.c">
+      <Filter>System</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Exception\ApplicationException.h">
@@ -650,8 +656,17 @@
     </ClInclude>
     <ClInclude Include="Foundation.h" />
     <ClInclude Include="FoundationDefs.h" />
+    <ClInclude Include="System\Mutex.h">
+      <Filter>System</Filter>
+    </ClInclude>
+    <ClInclude Include="System\FoundationUnicodeString.h">
+      <Filter>System</Filter>
+    </ClInclude>
+    <ClInclude Include="System\ConvertUTF.h">
+      <Filter>System</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Foundation.rc" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #include "Foundation.h"
 #include "AceStreamHelper.h"
 
+#if WANT_ACE
+
 /////////////////////////////////////////
 /// Globals
 
@@ -583,3 +585,6 @@
 
     return bConnected;
 }
+
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/AceStreamHelper.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -21,6 +21,8 @@
 #include "StreamHelper.h"
 
 class MgAceStreamHelper;
+
+#if WANT_ACE
 template class MG_FOUNDATION_API Ptr<MgAceStreamHelper>;
 
 /// \cond INTERNAL
@@ -157,4 +159,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGACESTREAMHELPER_H_

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Construct a ByteSourceFileImpl object
@@ -137,3 +139,5 @@
 
     m_name = filename;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceFileImpl.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_BYTE_SOURCE_FILE_IMPL_H_
 #define MG_BYTE_SOURCE_FILE_IMPL_H_
 
+#if WANT_ACE
+
 /// \cond INTERNAL
 /////////////////////////////////////////////////////////////////
 /// \brief
@@ -125,4 +127,6 @@
 }
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif // MG_BYTE_SOURCE_FILE_IMPL_H_

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,9 @@
 /// INTERNAL_CLASS - NOT EXPOSED
 
 #include "Foundation.h"
+
+#if WANT_ACE
+
 #include "ServerConnectionBase.h"
 #include "ByteSourceStreamImpl.h"
 #include "ByteSourceSocketStreamImpl.h"
@@ -199,3 +202,5 @@
     throw new MgInvalidOperationException(L"ByteSourceSocketStreamImpl.Rewind",
         __LINE__, __WFILE__, NULL, L"", NULL);
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceSocketStreamImpl.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_BYTE_SOURCE_SOCKET_STREAM_IMPL_H_
 #define MG_BYTE_SOURCE_SOCKET_STREAM_IMPL_H_
 
+#if WANT_ACE
+
 /// INTERNAL_CLASS - NOT EXPOSED
 /// \cond INTERNAL
 
@@ -106,4 +108,6 @@
 
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif // MG_BYTE_SOURCE_SOCKET_STREAM_IMPL_H_

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -16,7 +16,7 @@
 //
 
 /// INTERNAL_CLASS - NOT EXPOSED
-
+#if WANT_ACE
 #include "Foundation.h"
 #include "ByteSourceStreamImpl.h"
 
@@ -93,3 +93,4 @@
     throw new MgInvalidOperationException(L"ByteSourceMgStreamImpl.Rewind",
         __LINE__, __WFILE__, NULL, L"", NULL);
 }
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ByteSourceStreamImpl.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,7 @@
 #ifndef MG_BYTE_SOURCE_STREAM_IMPL_H_
 #define MG_BYTE_SOURCE_STREAM_IMPL_H_
 
+#if WANT_ACE
 /// INTERNAL_CLASS - NOT EXPOSED
 
 /// \cond INTERNAL
@@ -98,4 +99,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif

Modified: sandbox/adsk/vik/Common/Foundation/System/ClassFactory.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ClassFactory.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ClassFactory.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 MgClassFactory::MgClassFactory()
 {
 }
@@ -148,3 +150,4 @@
     return true;
 }
 
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/ClassFactory.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ClassFactory.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ClassFactory.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -20,6 +20,7 @@
 
 #include <map>
 
+#if WANT_ACE
 
 /// Typedef for class creation functions
 typedef MgObject* (*ClassCreatorFunc)();
@@ -79,4 +80,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif

Modified: sandbox/adsk/vik/Common/Foundation/System/Configuration.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Configuration.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Configuration.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 // Process-wide MgConfiguration
 Ptr<MgConfiguration> MgConfiguration::sm_configuration = (MgConfiguration*)NULL;
 
@@ -28,6 +30,7 @@
 MgConfiguration::MgConfiguration()
 {
     m_fileLoaded = false;
+    m_config = new MgConfigurationHeap;
 }
 
 /// <summary>
@@ -35,6 +38,7 @@
 /// </summary>
 MgConfiguration::~MgConfiguration()
 {
+    delete m_config;
 }
 
 /// <summary>
@@ -842,3 +846,5 @@
 
     return value;
 }
+
+#endif //WANT_ACE

Modified: sandbox/adsk/vik/Common/Foundation/System/Configuration.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Configuration.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Configuration.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_CONFIGURATION_H_
 #define MG_CONFIGURATION_H_
 
+#if WANT_ACE
+
 #include <list>
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -278,7 +280,7 @@
     static const STRING sm_reservedCharacters;
 
     /// Needed for thread-safety
-    ACE_Recursive_Thread_Mutex m_mutex;
+    CustomThreadMutex m_mutex;
 
     /// Ace member
     MgConfigurationHeap m_config;
@@ -299,4 +301,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif // MG_CONFIGURATION_H_

Modified: sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 MgConfigurationHeap::MgConfigurationHeap()
 {
     m_rootSection = new MgConfigurationSection();
@@ -460,3 +462,5 @@
     ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, false));
     return (m_aceConfigurationHeap.remove_value(key, name) == 0);
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/ConfigurationHeap.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_CONFIGURATION_HEAP_H_
 #define MG_CONFIGURATION_HEAP_H_
 
+#if WANT_ACE
+
 /// \cond INTERNAL
 class MgConfigurationHeap
 {
@@ -155,4 +157,7 @@
 };
 /// \endcond
 
+
+#endif //WANT_ACE
+
 #endif // MG_CONFIGURATION_HEAP_H_

Added: sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.c
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.c	                        (rev 0)
+++ sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.c	2011-12-05 17:52:42 UTC (rev 6288)
@@ -0,0 +1,575 @@
+/*
+ * Copyright 2001-2004 Unicode, Inc.
+ *
+ * Disclaimer
+ *
+ * This source code is provided as is by Unicode, Inc. No claims are
+ * made as to fitness for any particular purpose. No warranties of any
+ * kind are expressed or implied. The recipient agrees to determine
+ * applicability of information provided. If this file has been
+ * purchased on magnetic or optical media from Unicode, Inc., the
+ * sole remedy for any claim will be exchange of defective media
+ * within 90 days of receipt.
+ *
+ * Limitations on Rights to Redistribute This Code
+ *
+ * Unicode, Inc. hereby grants the right to freely use the information
+ * supplied in this file in the creation of products supporting the
+ * Unicode Standard, and to make copies of this file in any form
+ * for internal or external distribution as long as this notice
+ * remains attached.
+ */
+
+/* ---------------------------------------------------------------------
+
+    Conversions between UTF32, UTF-16, and UTF-8. Source code file.
+    Author: Mark E. Davis, 1994.
+    Rev History: Rick McGowan, fixes & updates May 2001.
+    Sept 2001: fixed const & error conditions per
+    mods suggested by S. Parent & A. Lillich.
+    June 2002: Tim Dodd added detection and handling of incomplete
+    source sequences, enhanced error detection, added casts
+    to eliminate compiler warnings.
+    July 2003: slight mods to back out aggressive FFFE detection.
+    Jan 2004: updated switches in from-UTF8 conversions.
+    Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions.
+
+    See the header file "ConvertUTF.h" for complete documentation.
+
+------------------------------------------------------------------------ */
+
+
+#include "ConvertUTF.h"
+#ifdef CVTUTF_DEBUG
+#include <stdio.h>
+#endif
+
+#pragma warning( disable : 4047 )
+
+
+static const int halfShift  = 10; /* used for shifting by 10 bits */
+
+static const UTF32 halfBase = 0x0010000UL;
+static const UTF32 halfMask = 0x3FFUL;
+
+#define UNI_SUR_HIGH_START  (UTF32)0xD800
+#define UNI_SUR_HIGH_END    (UTF32)0xDBFF
+#define UNI_SUR_LOW_START   (UTF32)0xDC00
+#define UNI_SUR_LOW_END     (UTF32)0xDFFF
+#define false      0
+#define true        1
+
+#define MAX_STRING_SIZE 100000000
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF32toUTF16 (
+    const UTF32** sourceStart, const UTF32* sourceEnd,
+    UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF32* source = *sourceStart;
+    UTF16* target = *targetStart;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF16);
+    while (source < sourceEnd) {
+    UTF32 ch;
+    if (target >= targetEnd) {
+        result = targetExhausted; break;
+    }
+    ch = *source++;
+    if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
+        /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */
+        if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+            --source; /* return to the illegal value itself */
+            result = sourceIllegal;
+            break;
+        } else {
+            if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+            target++;
+        }
+        } else {
+            if (getConvertedSize != flags) *target = (UTF16)ch; /* normal case */
+            target++;
+        }
+    } else if (ch > UNI_MAX_LEGAL_UTF32) {
+        if (flags == strictConversion) {
+        result = sourceIllegal;
+        } else {
+            if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+            target++;
+        }
+    } else {
+        /* target is a character in range 0xFFFF - 0x10FFFF. */
+        if (target + 1 >= targetEnd) {
+        --source; /* Back up source pointer! */
+        result = targetExhausted; break;
+        }
+        ch -= halfBase;
+        if (getConvertedSize != flags) *target = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
+        target++;
+        if (getConvertedSize != flags) *target = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
+        target++;
+    }
+    }
+    *sourceStart = source;
+    *targetStart = target;
+    return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF16toUTF32 (
+    const UTF16** sourceStart, const UTF16* sourceEnd,
+    UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF16* source = *sourceStart;
+    UTF32* target = *targetStart;
+    UTF32 ch, ch2;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF32);
+    while (source < sourceEnd) {
+    const UTF16* oldSource = source; /*  In case we have to back up because of target overflow. */
+    ch = *source++;
+    /* If we have a surrogate pair, convert to UTF32 first. */
+    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
+        /* If the 16 bits following the high surrogate are in the source buffer... */
+        if (source < sourceEnd) {
+        ch2 = *source;
+        /* If it's a low surrogate, convert to UTF32. */
+        if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
+            ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+            + (ch2 - UNI_SUR_LOW_START) + halfBase;
+            ++source;
+        } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
+            --source; /* return to the illegal value itself */
+            result = sourceIllegal;
+            break;
+        }
+        } else { /* We don't have the 16 bits following the high surrogate. */
+        --source; /* return to the high surrogate */
+        result = sourceExhausted;
+        break;
+        }
+    } else if (flags == strictConversion) {
+        /* UTF-16 surrogate values are illegal in UTF-32 */
+        if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+        }
+    }
+    if (target >= targetEnd) {
+        source = oldSource; /* Back up source pointer! */
+        result = targetExhausted; break;
+    }
+    if (getConvertedSize != flags) *target = ch;
+    target++;
+    }
+    *sourceStart = source;
+    *targetStart = target;
+#ifdef CVTUTF_DEBUG
+if (result == sourceIllegal) {
+    fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2);
+    fflush(stderr);
+}
+#endif
+    return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Index into the table below with the first byte of a UTF-8 sequence to
+ * get the number of trailing bytes that are supposed to follow it.
+ * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
+ * left as-is for anyone who may want to do such conversion, which was
+ * allowed in earlier algorithms.
+ */
+static const char trailingBytesForUTF8[256] = {
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+};
+
+/*
+ * Magic values subtracted from a buffer value during UTF8 conversion.
+ * This table contains as many values as there might be trailing bytes
+ * in a UTF-8 sequence.
+ */
+static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
+             0x03C82080UL, 0xFA082080UL, 0x82082080UL };
+
+/*
+ * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed
+ * into the first byte, depending on how many bytes follow.  There are
+ * as many entries in this table as there are UTF-8 sequence types.
+ * (I.e., one byte sequence, two byte... etc.). Remember that sequencs
+ * for *legal* UTF-8 will be 4 or fewer bytes total.
+ */
+static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
+
+/* --------------------------------------------------------------------- */
+
+/* The interface converts a whole buffer to avoid function-call overhead.
+ * Constants have been gathered. Loops & conditionals have been removed as
+ * much as possible for efficiency, in favor of drop-through switches.
+ * (See "Note A" at the bottom of the file for equivalent code.)
+ * If your compiler supports it, the "isLegalUTF8" call can be turned
+ * into an inline function.
+ */
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF16toUTF8 (
+    const UTF16** sourceStart, const UTF16* sourceEnd,
+    UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF16* source = *sourceStart;
+    UTF8* target = *targetStart;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF8);
+    while (source < sourceEnd) {
+    UTF32 ch;
+    unsigned short bytesToWrite = 0;
+    const UTF32 byteMask = 0xBF;
+    const UTF32 byteMark = 0x80;
+    const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
+    ch = *source++;
+    /* If we have a surrogate pair, convert to UTF32 first. */
+    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
+        /* If the 16 bits following the high surrogate are in the source buffer... */
+        if (source < sourceEnd) {
+        UTF32 ch2 = *source;
+        /* If it's a low surrogate, convert to UTF32. */
+        if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
+            ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+            + (ch2 - UNI_SUR_LOW_START) + halfBase;
+            ++source;
+        } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
+            --source; /* return to the illegal value itself */
+            result = sourceIllegal;
+            break;
+        }
+        } else { /* We don't have the 16 bits following the high surrogate. */
+        --source; /* return to the high surrogate */
+        result = sourceExhausted;
+        break;
+        }
+    } else if (flags == strictConversion) {
+        /* UTF-16 surrogate values are illegal in UTF-32 */
+        if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+        }
+    }
+    /* Figure out how many bytes the result will require */
+    if (ch < (UTF32)0x80) {      bytesToWrite = 1;
+    } else if (ch < (UTF32)0x800) {     bytesToWrite = 2;
+    } else if (ch < (UTF32)0x10000) {   bytesToWrite = 3;
+    } else if (ch < (UTF32)0x110000) {  bytesToWrite = 4;
+    } else {                bytesToWrite = 3;
+                        ch = UNI_REPLACEMENT_CHAR;
+    }
+
+    target += bytesToWrite;
+    if (target > targetEnd) {
+        source = oldSource; /* Back up source pointer! */
+        target -= bytesToWrite; result = targetExhausted; break;
+    }
+    if (getConvertedSize != flags)
+    {
+        switch (bytesToWrite) { /* note: everything falls through. */
+            case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 1: *--target =  (UTF8)(ch | firstByteMark[bytesToWrite]);
+        }
+        target += bytesToWrite;
+    }
+    }
+    *sourceStart = source;
+    *targetStart = target;
+    return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Utility routine to tell whether a sequence of bytes is legal UTF-8.
+ * This must be called with the length pre-determined by the first byte.
+ * If not calling this from ConvertUTF8to*, then the length can be set by:
+ *  length = trailingBytesForUTF8[*source]+1;
+ * and the sequence is illegal right away if there aren't that many bytes
+ * available.
+ * If presented with a length > 4, this returns false.  The Unicode
+ * definition of UTF-8 goes up to 4-byte sequences.
+ */
+
+static Boolean MgIsLegalUTF8(const UTF8 *source, int length) {
+    UTF8 a;
+    const UTF8 *srcptr = source+length;
+    switch (length) {
+    default: return false;
+    /* Everything else falls through when "true"... */
+    case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+    case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+    case 2: if ((a = (*--srcptr)) > 0xBF) return false;
+
+    switch (*source) {
+        /* no fall-through in this inner switch */
+        case 0xE0: if (a < 0xA0) return false; break;
+        case 0xED: if (a > 0x9F) return false; break;
+        case 0xF0: if (a < 0x90) return false; break;
+        case 0xF4: if (a > 0x8F) return false; break;
+        default:   if (a < 0x80) return false;
+    }
+
+    case 1: if (*source >= 0x80 && *source < 0xC2) return false;
+    }
+    if (*source > 0xF4) return false;
+    return true;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Exported function to return whether a UTF-8 sequence is legal or not.
+ * This is not used here; it's just exported.
+ */
+Boolean MgIsLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
+    int length = trailingBytesForUTF8[*source]+1;
+    if (source+length > sourceEnd) {
+    return false;
+    }
+    return MgIsLegalUTF8(source, length);
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF8toUTF16 (
+    const UTF8** sourceStart, const UTF8* sourceEnd,
+    UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF8* source = *sourceStart;
+    UTF16* target = *targetStart;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF16);
+    while (source < sourceEnd) {
+    UTF32 ch = 0;
+    unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
+    if (source + extraBytesToRead >= sourceEnd) {
+        result = sourceExhausted; break;
+    }
+    /* Do this check whether lenient or strict */
+    if (! MgIsLegalUTF8(source, extraBytesToRead+1)) {
+        result = sourceIllegal;
+        break;
+    }
+    /*
+     * The cases all fall through. See "Note A" below.
+     */
+    switch (extraBytesToRead) {
+        case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
+        case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
+        case 3: ch += *source++; ch <<= 6;
+        case 2: ch += *source++; ch <<= 6;
+        case 1: ch += *source++; ch <<= 6;
+        case 0: ch += *source++;
+    }
+    ch -= offsetsFromUTF8[extraBytesToRead];
+
+    if (target >= targetEnd) {
+        source -= (extraBytesToRead+1); /* Back up source pointer! */
+        result = targetExhausted; break;
+    }
+    if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
+        /* UTF-16 surrogate values are illegal in UTF-32 */
+        if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+            source -= (extraBytesToRead+1); /* return to the illegal value itself */
+            result = sourceIllegal;
+            break;
+        } else {
+            if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+            target++;
+        }
+        } else {
+            if (getConvertedSize != flags) *target = (UTF16)ch; /* normal case */
+            target++;
+        }
+    } else if (ch > UNI_MAX_UTF16) {
+        if (flags == strictConversion) {
+        result = sourceIllegal;
+        source -= (extraBytesToRead+1); /* return to the start */
+        break; /* Bail out; shouldn't continue */
+        } else {
+            if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+            target++;
+        }
+    } else {
+        /* target is a character in range 0xFFFF - 0x10FFFF. */
+        if (target + 1 >= targetEnd) {
+        source -= (extraBytesToRead+1); /* Back up source pointer! */
+        result = targetExhausted; break;
+        }
+        ch -= halfBase;
+        if (getConvertedSize != flags) {
+            *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
+            *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
+        }
+        else {
+            target++;
+            target++;
+        }
+
+    }
+    }
+    *sourceStart = source;
+    *targetStart = target;
+    return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF32toUTF8 (
+    const UTF32** sourceStart, const UTF32* sourceEnd,
+    UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF32* source = *sourceStart;
+    UTF8* target = *targetStart;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF8);
+    while (source < sourceEnd) {
+    UTF32 ch;
+    unsigned short bytesToWrite = 0;
+    const UTF32 byteMask = 0xBF;
+    const UTF32 byteMark = 0x80;
+    ch = *source++;
+    if (flags == strictConversion) {
+        /* UTF-16 surrogate values are illegal in UTF-32 */
+        if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+        }
+    }
+    /*
+     * Figure out how many bytes the result will require. Turn any
+     * illegally large UTF32 things (> Plane 17) into replacement chars.
+     */
+    if (ch < (UTF32)0x80) {      bytesToWrite = 1;
+    } else if (ch < (UTF32)0x800) {     bytesToWrite = 2;
+    } else if (ch < (UTF32)0x10000) {   bytesToWrite = 3;
+    } else if (ch <= UNI_MAX_LEGAL_UTF32) {  bytesToWrite = 4;
+    } else {                bytesToWrite = 3;
+                        ch = UNI_REPLACEMENT_CHAR;
+                        result = sourceIllegal;
+    }
+
+    target += bytesToWrite;
+    if (target > targetEnd) {
+        --source; /* Back up source pointer! */
+        target -= bytesToWrite; result = targetExhausted; break;
+    }
+    if (getConvertedSize != flags)
+    {
+        switch (bytesToWrite) { /* note: everything falls through. */
+            case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+            case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]);
+        }
+        target += bytesToWrite;
+    }
+    }
+    *sourceStart = source;
+    *targetStart = target;
+    return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult MgConvertUTF8toUTF32 (
+    const UTF8** sourceStart, const UTF8* sourceEnd,
+    UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
+    ConversionResult result = conversionOK;
+    const UTF8* source = *sourceStart;
+    UTF32* target = *targetStart;
+    if (getConvertedSize == flags) targetEnd = target + MAX_STRING_SIZE*sizeof(UTF32);
+    while (source < sourceEnd) {
+    UTF32 ch = 0;
+    unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
+    if (source + extraBytesToRead >= sourceEnd) {
+        result = sourceExhausted; break;
+    }
+    /* Do this check whether lenient or strict */
+    if (! MgIsLegalUTF8(source, extraBytesToRead+1)) {
+        result = sourceIllegal;
+        break;
+    }
+    /*
+     * The cases all fall through. See "Note A" below.
+     */
+    switch (extraBytesToRead) {
+        case 5: ch += *source++; ch <<= 6;
+        case 4: ch += *source++; ch <<= 6;
+        case 3: ch += *source++; ch <<= 6;
+        case 2: ch += *source++; ch <<= 6;
+        case 1: ch += *source++; ch <<= 6;
+        case 0: ch += *source++;
+    }
+    ch -= offsetsFromUTF8[extraBytesToRead];
+
+    if (target >= targetEnd) {
+        source -= (extraBytesToRead+1); /* Back up the source pointer! */
+        result = targetExhausted; break;
+    }
+    if (ch <= UNI_MAX_LEGAL_UTF32) {
+        /*
+         * UTF-16 surrogate values are illegal in UTF-32, and anything
+         * over Plane 17 (> 0x10FFFF) is illegal.
+         */
+        if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+            source -= (extraBytesToRead+1); /* return to the illegal value itself */
+            result = sourceIllegal;
+            break;
+        } else {
+            if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+            target++;
+        }
+        } else {
+            if (getConvertedSize != flags) *target = ch;
+            target++;
+        }
+    } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */
+        result = sourceIllegal;
+        if (getConvertedSize != flags) *target = UNI_REPLACEMENT_CHAR;
+        target++;
+    }
+    }
+    *sourceStart = source;
+    *targetStart = target;
+    return result;
+}
+
+/* ---------------------------------------------------------------------
+
+    Note A.
+    The fall-through switches in UTF-8 reading code save a
+    temp variable, some decrements & conditionals.  The switches
+    are equivalent to the following loop:
+    {
+        int tmpBytesToRead = extraBytesToRead+1;
+        do {
+        ch += *source++;
+        --tmpBytesToRead;
+        if (tmpBytesToRead) ch <<= 6;
+        } while (tmpBytesToRead > 0);
+    }
+    In UTF-8 writing code, the switches on "bytesToWrite" are
+    similarly unrolled loops.
+
+   --------------------------------------------------------------------- */

Added: sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.h	                        (rev 0)
+++ sandbox/adsk/vik/Common/Foundation/System/ConvertUTF.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2001-2004 Unicode, Inc.
+ *
+ * Disclaimer
+ *
+ * This source code is provided as is by Unicode, Inc. No claims are
+ * made as to fitness for any particular purpose. No warranties of any
+ * kind are expressed or implied. The recipient agrees to determine
+ * applicability of information provided. If this file has been
+ * purchased on magnetic or optical media from Unicode, Inc., the
+ * sole remedy for any claim will be exchange of defective media
+ * within 90 days of receipt.
+ *
+ * Limitations on Rights to Redistribute This Code
+ *
+ * Unicode, Inc. hereby grants the right to freely use the information
+ * supplied in this file in the creation of products supporting the
+ * Unicode Standard, and to make copies of this file in any form
+ * for internal or external distribution as long as this notice
+ * remains attached.
+ */
+
+/* ---------------------------------------------------------------------
+
+    Conversions between UTF32, UTF-16, and UTF-8.  Header file.
+
+    Several funtions are included here, forming a complete set of
+    conversions between the three formats.  UTF-7 is not included
+    here, but is handled in a separate source file.
+
+    Each of these routines takes pointers to input buffers and output
+    buffers.  The input buffers are const.
+
+    Each routine converts the text between *sourceStart and sourceEnd,
+    putting the result into the buffer between *targetStart and
+    targetEnd. Note: the end pointers are *after* the last item: e.g.
+    *(sourceEnd - 1) is the last item.
+
+    The return result indicates whether the conversion was successful,
+    and if not, whether the problem was in the source or target buffers.
+    (Only the first encountered problem is indicated.)
+
+    After the conversion, *sourceStart and *targetStart are both
+    updated to point to the end of last text successfully converted in
+    the respective buffers.
+
+    Input parameters:
+    sourceStart - pointer to a pointer to the source buffer.
+        The contents of this are modified on return so that
+        it points at the next thing to be converted.
+    targetStart - similarly, pointer to pointer to the target buffer.
+    sourceEnd, targetEnd - respectively pointers to the ends of the
+        two buffers, for overflow checking only.
+
+    These conversion functions take a ConversionFlags argument. When this
+    flag is set to strict, both irregular sequences and isolated surrogates
+    will cause an error.  When the flag is set to lenient, both irregular
+    sequences and isolated surrogates are converted.
+
+    Whether the flag is strict or lenient, all illegal sequences will cause
+    an error return. This includes sequences such as: <F4 90 80 80>, <C0 80>,
+    or <A0> in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code
+    must check for illegal sequences.
+
+    When the flag is set to lenient, characters over 0x10FFFF are converted
+    to the replacement character; otherwise (when the flag is set to strict)
+    they constitute an error.
+
+    Output parameters:
+    The value "sourceIllegal" is returned from some routines if the input
+    sequence is malformed.  When "sourceIllegal" is returned, the source
+    value will point to the illegal value that caused the problem. E.g.,
+    in UTF-8 when a sequence is malformed, it points to the start of the
+    malformed sequence.
+
+    Author: Mark E. Davis, 1994.
+    Rev History: Rick McGowan, fixes & updates May 2001.
+         Fixes & updates, Sept 2001.
+
+------------------------------------------------------------------------ */
+
+/* ---------------------------------------------------------------------
+    The following 4 definitions are compiler-specific.
+    The C standard does not guarantee that wchar_t has at least
+    16 bits, so wchar_t is no less portable than unsigned short!
+    All should be unsigned values to avoid sign extension during
+    bit mask & shift operations.
+------------------------------------------------------------------------ */
+
+#ifndef CONVERT_UTF_H_
+#define CONVERT_UTF_H_
+
+typedef unsigned int   UTF32;  /* at least 32 bits */
+typedef unsigned short  UTF16;  /* at least 16 bits */
+typedef unsigned char   UTF8;   /* typically 8 bits */
+typedef unsigned char   Boolean; /* 0 or 1 */
+
+/* Some fundamental constants */
+#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
+#define UNI_MAX_BMP (UTF32)0x0000FFFF
+#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
+#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
+#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
+
+typedef enum {
+    conversionOK,       /* conversion successful */
+    sourceExhausted,    /* partial character in source, but hit end */
+    targetExhausted,    /* insuff. room in target for conversion */
+    sourceIllegal       /* source sequence is illegal/malformed */
+} ConversionResult;
+
+typedef enum {
+    strictConversion = 0,
+    getConvertedSize,
+    lenientConversion
+} ConversionFlags;
+
+/* This is for C++ and does no harm in C */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ConversionResult MgConvertUTF8toUTF16 (
+        const UTF8** sourceStart, const UTF8* sourceEnd,
+        UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
+
+ConversionResult MgConvertUTF16toUTF8 (
+        const UTF16** sourceStart, const UTF16* sourceEnd,
+        UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
+
+ConversionResult MgConvertUTF8toUTF32 (
+        const UTF8** sourceStart, const UTF8* sourceEnd,
+        UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
+
+ConversionResult MgConvertUTF32toUTF8 (
+        const UTF32** sourceStart, const UTF32* sourceEnd,
+        UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
+
+ConversionResult MgConvertUTF16toUTF32 (
+        const UTF16** sourceStart, const UTF16* sourceEnd,
+        UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
+
+ConversionResult MgConvertUTF32toUTF16 (
+        const UTF32** sourceStart, const UTF32* sourceEnd,
+        UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
+
+Boolean MgIsLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // CONVERT_UTF_H_

Modified: sandbox/adsk/vik/Common/Foundation/System/Disposable.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Disposable.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Disposable.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -21,6 +21,7 @@
 //////////////////////////////////////////////////////////////
 INT32 MgDisposable::GetRefCount()
 {
+#if WANT_ACE
 #ifdef _DEBUG
     // conditionally acquire the lock
     ACE_Guard<ACE_Recursive_Thread_Mutex> ace_mon(m_dbg_mutex, 0);
@@ -32,6 +33,7 @@
         assert(false);
     }
 #endif
+#endif
 
     return m_refCount;
 }
@@ -40,6 +42,7 @@
 //////////////////////////////////////////////////////////////
 INT32 MgDisposable::AddRef()
 {
+#if WANT_ACE
 #ifdef _DEBUG
     // conditionally acquire the lock
     ACE_Guard<ACE_Recursive_Thread_Mutex> ace_mon(m_dbg_mutex, 0);
@@ -51,6 +54,7 @@
         assert(false);
     }
 #endif
+#endif
 
     m_refCountFlag = true;
 
@@ -71,6 +75,7 @@
 INT32 MgDisposable::Release()
 {
     {
+#if WANT_ACE
 #ifdef _DEBUG
         // conditionally acquire the lock
         ACE_Guard<ACE_Recursive_Thread_Mutex> ace_mon(m_dbg_mutex, 0);
@@ -82,6 +87,7 @@
             assert(false);
         }
 #endif
+#endif
 
         m_refCountFlag = true;
 

Modified: sandbox/adsk/vik/Common/Foundation/System/Disposable.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Disposable.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Disposable.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,9 +18,11 @@
 #ifndef _MGDISPOSABLE_H_
 #define _MGDISPOSABLE_H_
 
+#if WANT_ACE
 #ifdef _DEBUG
 #include "ace/Process_Manager.h"
 #endif
+#endif
 
 /// \cond INTERNAL
 /////////////////////////////////////////////////////////////////
@@ -123,9 +125,11 @@
     INT32 m_refCount;
     bool m_refCountFlag;
 
+#if WANT_ACE
 #ifdef _DEBUG
     ACE_Recursive_Thread_Mutex m_dbg_mutex;
 #endif
+#endif
 };
 /// \endcond
 

Modified: sandbox/adsk/vik/Common/Foundation/System/FileUtil.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FileUtil.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/FileUtil.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #include "Foundation.h"
 #include "FileUtil.h"
 
+#if WANT_ACE
+
 ACE_Recursive_Thread_Mutex MgFileUtil::sm_mutex;
 
 const STRING MgFileUtil::sm_reservedCharacters = L"\\/:*?\"<>|";
@@ -1315,3 +1317,5 @@
 
     return safe;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/FileUtil.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FileUtil.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/FileUtil.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGFILEUTIL_H_
 #define MGFILEUTIL_H_
 
+#if WANT_ACE
+
 // INTERNAL USE ONLY
 
 // This allows to use the same function name for both Windows and Linux.
@@ -129,6 +131,8 @@
 
 /// Inline Methods
 
+#endif //WANT_ACE
+
 #endif
 
 

Modified: sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 ///////////////////////////////////////////////////////////////////////////////
 /// Length ranges of string properties
 ///
@@ -83,3 +85,4 @@
 
 static bool bFoundationConfigInit = InitializeFoundationConfig();
 
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/FoundationConfigProperties.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGFOUNDATIONCONFIGPROPERTIES_H_
 #define MGFOUNDATIONCONFIGPROPERTIES_H_
 
+#if WANT_ACE
+
 struct MgConfigValidationInfo;
 
 /// \cond INTERNAL
@@ -73,4 +75,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif

Added: sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.cpp	                        (rev 0)
+++ sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -0,0 +1,157 @@
+//
+//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include "FoundationUnicodeString.h"
+#include "ConvertUTF.h"
+
+#define UTFCONVERT(FROMCHARSET,TOCHARSET) \
+    if (!str.empty())\
+        str.clear();\
+\
+    if (uniChar == NULL)\
+        return;\
+\
+    size_t size = 0;\
+\
+    const FROMCHARSET* sourceStart = (FROMCHARSET*) uniChar;\
+    FROMCHARSET* sourceEnd = (FROMCHARSET*) sourceStart;\
+    while (*sourceEnd != (FROMCHARSET)0)\
+    {\
+        ++sourceEnd;\
+    }\
+    ++sourceEnd; /* include terminating null in conversion */\
+    TOCHARSET* targetStart = 0;\
+    TOCHARSET* targetEnd = 0;\
+    ConversionResult convResult = MgConvert##FROMCHARSET##to##TOCHARSET (&sourceStart, sourceEnd,\
+        &targetStart, targetEnd, getConvertedSize);\
+\
+    if (conversionOK == convResult)\
+    {\
+        size = ((size_t)targetStart)/sizeof(TOCHARSET);\
+    }\
+    else\
+    {\
+        throw FoundationUnicodeString::ConversionError;\
+    }\
+\
+    if (size > 0)\
+    {\
+        if (str.capacity() < size)\
+        {\
+            str.reserve(size);\
+        }\
+        str.resize(size-1);\
+        sourceStart = (FROMCHARSET*) uniChar;\
+        targetStart = (TOCHARSET*) str.c_str();\
+        targetEnd = (TOCHARSET*) (targetStart+size);\
+        convResult = MgConvert##FROMCHARSET##to##TOCHARSET (&sourceStart, sourceEnd,\
+            &targetStart, targetEnd, lenientConversion);\
+\
+        if (conversionOK != convResult)\
+        {\
+            throw FoundationUnicodeString::ConversionError;\
+        }\
+    }
+
+void FoundationUnicodeString::WideCharToMultiByte(const wchar_t* uniChar, string& str)
+{
+#ifdef _WIN32
+    UTFCONVERT(UTF16,UTF8)
+#else
+    UTFCONVERT(UTF32,UTF8)
+#endif
+}
+
+void FoundationUnicodeString::MultiByteToWideChar(const char* uniChar, wstring& str)
+{
+#ifdef _WIN32
+    UTFCONVERT(UTF8,UTF16)
+#else
+    UTFCONVERT(UTF8,UTF32)
+#endif
+}
+
+
+void FoundationUnicodeString::UTF16toUTF8(const XMLCh* uniChar, string& str)
+{
+    UTFCONVERT(UTF16,UTF8)
+}
+
+void FoundationUnicodeString::UTF8toUTF16(const char* uniChar, xstring& str)
+{
+    UTFCONVERT(UTF8,UTF16)
+}
+
+xstring FoundationUnicodeString::UTF8toUTF16(const char* mbStr)
+{
+    xstring str;
+    UTF8toUTF16(mbStr, str);
+    return str;
+}
+
+void FoundationUnicodeString::UTF32toUTF8(const LCh* uniChar, string& str)
+{
+    UTFCONVERT(UTF32,UTF8)
+}
+
+void FoundationUnicodeString::UTF8toUTF32(const char* uniChar, lstring& str)
+{
+    UTFCONVERT(UTF8,UTF32)
+}
+
+void FoundationUnicodeString::UTF32toUTF16(const LCh* uniChar, xstring& str)
+{
+    UTFCONVERT(UTF32,UTF16)
+}
+
+xstring FoundationUnicodeString::UTF32toUTF16(const LCh* wideStr)
+{
+    xstring utf16;
+    try
+    {
+        UTF32toUTF16(wideStr, utf16);
+    }
+    catch (int)
+    {
+    }
+
+    return utf16;
+}
+
+void FoundationUnicodeString::UTF16toUTF32(const XMLCh* uniChar, lstring& str)
+{
+    UTFCONVERT(UTF16,UTF32)
+}
+
+lstring FoundationUnicodeString::UTF16toUTF32(const XMLCh* uniChar)
+{
+    lstring utf32;
+    try
+    {
+        UTF16toUTF32(uniChar, utf32);
+    }
+    catch (int)
+    {
+    }
+
+    return utf32;
+}
+
+#ifndef _WIN32
+template class basic_string<XMLCh, unicode_traits<XMLCh> >;
+template class basic_string<LCh, unicode_traits<LCh> >;
+#endif

Added: sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.h	                        (rev 0)
+++ sandbox/adsk/vik/Common/Foundation/System/FoundationUnicodeString.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -0,0 +1,200 @@
+//
+//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#pragma once
+
+#include <string>
+#include <cstring>
+
+using namespace std;
+
+// Define character type for UTF-16.  This is used by Xerces C++.
+#ifdef _NATIVE_WCHAR_T_DEFINED
+    typedef wchar_t  XMLCh;
+#else
+    typedef unsigned short  XMLCh;
+#endif
+
+// Define character type for UTF-32.  This is the same as the wchar_t type
+// under Linux.  "L" stands for "long" character.  Not a great name...
+typedef unsigned int LCh;
+
+
+// This is a modification of standard char_traits<_Char> template class so
+// that it behaves relatively correctly for character types other than
+// char and wchar_t.
+namespace std
+{
+template <class _Char>
+struct unicode_traits
+{
+    typedef _Char       char_type;
+    typedef int         int_type;
+    typedef streampos   pos_type;
+    typedef streamoff   off_type;
+    typedef mbstate_t   state_type;
+
+    static void
+    assign(char_type& __c1, const char_type& __c2)
+    { __c1 = __c2; }
+
+    static bool
+    eq(const char_type& __c1, const char_type& __c2)
+    { return __c1 == __c2; }
+
+    static bool
+    lt(const char_type& __c1, const char_type& __c2)
+    { return __c1 < __c2; }
+
+    static int
+    compare(const char_type* __s1, const char_type* __s2, size_t __n)
+    { return memcmp(__s1, __s2, __n * sizeof(char_type)); }
+
+    static size_t
+    length(const char_type* __s)
+    { size_t len = 0;
+      const char_type* __end = __s;
+      while (__end != NULL && *__end != 0) ++__end;
+      if (__end != __s)
+      {
+          len = (size_t) (__end - __s);
+      }
+      return len;
+    }
+
+    static const char_type*
+    find(const char_type* __s, size_t __n, const char_type& __a)
+    {
+      const char_type* __end = __s;
+      const char_type* __found = NULL;
+      while (__end != NULL && *__end != 0 && __end < __s+__n)
+      {
+          if (*__end == __a) break;
+          ++__end;
+      }
+
+      if (__end != NULL && *__end == __a)
+      {
+          __found = __end;
+      }
+
+      return __found;
+    }
+
+    static char_type*
+    move(char_type* __s1, const char_type* __s2, size_t __n)
+    { return static_cast<char_type*>(memmove(__s1, __s2, __n*sizeof(char_type))); }
+
+    static char_type*
+    copy(char_type* __s1, const char_type* __s2, size_t __n)
+    {  return static_cast<char_type*>(memcpy(__s1, __s2, __n*sizeof(char_type))); }
+
+    static size_t 
+    _Copy_s(char_type* __dest, size_t __dest_count, const char_type* _off, size_t _Count)
+    {
+        copy(__dest, _off, _Count);
+        return length(__dest);
+    }
+   
+    static char_type*
+    assign(char_type* __s, size_t __n, char_type __a)
+    {
+      for (size_t i=0; i<__n; i++) __s[i] = __a;
+      return __s;
+    }
+
+    static char_type
+    to_char_type(const int_type& __c)
+    { return static_cast<char_type>(__c); }
+
+    // To keep both the byte 0xff and the eof symbol 0xffffffff
+    // from ending up as 0xffffffff.
+    static int_type
+    to_int_type(const char_type& __c)
+    { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
+
+    static bool
+    eq_int_type(const int_type& __c1, const int_type& __c2)
+    { return __c1 == __c2; }
+
+    static int_type
+    eof() { return static_cast<int_type>(EOF); }
+
+    static int_type
+    not_eof(const int_type& __c)
+    { return (__c == eof()) ? 0 : __c; }
+};
+}
+
+// The generic char_traits template may not work correctly for arbitrary character
+// types.  This is why char_traits is specialized for char and wchar_t.  To get around this,
+// we use the unicode_traits template defined above.  It should be more correct than the
+// default stl template expansion.
+//
+// xstring is a string template class for UTF-16.  UTF-16 is used internally by xerces,
+// hence "x"string.  This is similar to wstring on Windows
+//
+// lstring is a string template for UTF-32.  This should be similar to wstring on Linux.
+// Ideally, no one should ever have to use lstring.  But it is here for completeness.
+
+
+typedef basic_string<XMLCh, unicode_traits<XMLCh> > xstring;
+typedef basic_string<LCh, unicode_traits<LCh> > lstring;
+
+// Unicode byte code conversion class.  This class contains static methods to convert
+// between UTF-8, UTF-16, and UTF-32.  It requires no additional libraries to function and
+// uses stl::basic_string functionality w/ help from the template defined above.
+// These routine are thread safe but will probably not work on big endian platforms.
+// TODO:  Modify ConvertUTF.c to work on big endian platforms
+class FoundationUnicodeString
+{
+public:
+
+    // Platform neutral conversion routines.  Compile time adjustments for Linux and Windows
+    static void WideCharToMultiByte(const wchar_t* wideStr, string& mbStr);
+    static void MultiByteToWideChar(const char* mbStr, wstring& wideStr);
+
+    static void UTF16toUTF8(const  XMLCh* wideStr, string& mbStr);
+    static void UTF8toUTF16(const char* mbStr, xstring& wideStr);
+    static xstring UTF8toUTF16(const char* mbStr);
+
+    static void UTF32toUTF8(const LCh* wideStr, string& mbStr);
+    static void UTF8toUTF32(const char* mbStr, lstring& wideStr);
+
+    static void UTF32toUTF16(const LCh* wideStr, xstring& mbStr);
+    static void UTF16toUTF32(const  XMLCh*, lstring& wideStr);
+    static xstring UTF32toUTF16(const LCh* wideStr);
+    static lstring UTF16toUTF32(const  XMLCh* wideStr);
+
+    static const int ConversionError = 0xBADCBADC;
+};
+
+// Define shortcuts to convert to/from wchar_t strings to XMLCh strings on
+// each platform.  Since Windows and Linux have different wchar_t representations,
+// these macros are platform dependent
+#ifdef _WIN32
+// On Windows, wchar_t and XMLCh are both UTF-16.  No conversion is necessary
+#   define W2X(str) (const XMLCh*) str
+#   define X2W(str) (const wchar_t*) str
+#else
+// On Linux, wchar_t is UTF-32.  Do the appropriate conversion
+#   define W2X(oldstr) (XMLCh*) (FoundationUnicodeString::UTF32toUTF16((const LCh*) oldstr).c_str())
+#   define X2W(oldstr) (const wchar_t*) FoundationUnicodeString::UTF16toUTF32(oldstr).c_str()
+#endif
+
+#define X(str) FoundationUnicodeString::UTF8toUTF16(str).c_str()
+

Modified: sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -21,7 +21,7 @@
 //////////////////////////////////////////////////////////////
 INT32 MgGuardDisposable::GetRefCount()
 {
-    ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, -1));
+    AutoMutexLocker lock(m_mutex);
 
     return m_refCount;
 }
@@ -30,7 +30,7 @@
 //////////////////////////////////////////////////////////////
 INT32 MgGuardDisposable::AddRef()
 {
-    ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, -1));
+    AutoMutexLocker lock(m_mutex);
 
     m_refCountFlag = true;
 
@@ -51,7 +51,7 @@
 INT32 MgGuardDisposable::Release()
 {
     {
-        ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, -1));
+        AutoMutexLocker lock(m_mutex);
 
         m_refCountFlag = true;
 
@@ -81,7 +81,7 @@
 //////////////////////////////////////////////////////////////
 void MgGuardDisposable::SetRefCountFlag()
 {
-   ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex));
+   AutoMutexLocker lock(m_mutex);
    m_refCountFlag = true;
 }
 

Modified: sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/GuardDisposable.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,7 +18,7 @@
 #ifndef _MGGUARDDISPOSABLE_H_
 #define _MGGUARDDISPOSABLE_H_
 
-#include "ace/Process_Manager.h"
+#include "Mutex.h"
 
 /// \cond INTERNAL
 /////////////////////////////////////////////////////////////////
@@ -89,7 +89,7 @@
 
 private:
 
-    ACE_Recursive_Thread_Mutex m_mutex;
+    CustomThreadMutex m_mutex;
 };
 /// \endcond
 

Modified: sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -15,6 +15,8 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+#if WANT_ACE
+
 #include "Foundation.h"
 #include "MemoryStreamHelper.h"
 #include "Base64.h"
@@ -423,3 +425,5 @@
 {
     m_curPtrRead = m_buffer;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/MemoryStreamHelper.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGMEMORYSTREAMHELPER_H_MG
 #define MGMEMORYSTREAMHELPER_H_MG
 
+#if WANT_ACE
+
 #include "StreamHelper.h"
 
 class MgMemoryStreamHelper;
@@ -202,4 +204,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGMEMORYSTREAMHELPER_H_MG

Added: sandbox/adsk/vik/Common/Foundation/System/Mutex.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Mutex.h	                        (rev 0)
+++ sandbox/adsk/vik/Common/Foundation/System/Mutex.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -0,0 +1,106 @@
+//
+//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#pragma once
+
+#ifdef _WIN32
+#   include <windows.h>
+#else
+#   include <pthread.h>
+#   ifndef __bsdi__
+#      include <semaphore.h>
+#   endif
+#endif
+
+class CustomThreadMutex
+{
+public:
+    CustomThreadMutex()
+    {
+    #ifdef _WIN32
+        ::InitializeCriticalSection(&m_criticalSection);
+    #else
+        pthread_mutexattr_init(&m_mutexAttributes);
+        pthread_mutexattr_settype(&m_mutexAttributes, PTHREAD_MUTEX_RECURSIVE);
+        pthread_mutex_init(&m_criticalSection, &m_mutexAttributes);
+        pthread_mutexattr_destroy(&m_mutexAttributes);
+    #endif
+    }
+
+    ~CustomThreadMutex()
+    {
+    #ifdef _WIN32
+        ::DeleteCriticalSection(&m_criticalSection);
+    #else
+        pthread_mutex_destroy(&m_criticalSection);
+    #endif
+    }
+
+    void Lock()
+    {
+    #ifdef _WIN32
+        ::EnterCriticalSection(&m_criticalSection);
+    #else
+        pthread_mutex_lock(&m_criticalSection);
+    #endif
+    }
+
+    void Unlock()
+    {
+    #ifdef _WIN32
+        ::LeaveCriticalSection(&m_criticalSection);
+    #else
+        pthread_mutex_unlock(&m_criticalSection);
+    #endif
+    }
+
+private:
+    // Unimplemented copy constructor and assignment operator.
+    CustomThreadMutex(const CustomThreadMutex&);
+    CustomThreadMutex& operator=(const CustomThreadMutex&);
+
+#ifdef _WIN32
+    CRITICAL_SECTION m_criticalSection;
+#else
+    pthread_mutex_t m_criticalSection;
+    pthread_mutexattr_t m_mutexAttributes;
+#endif
+};
+
+class AutoMutexLocker
+{
+public:
+    AutoMutexLocker(CustomThreadMutex& mutex)
+    : m_mutex(mutex)
+    {
+        m_mutex.Lock();
+    }
+
+    ~AutoMutexLocker()
+    {
+        m_mutex.Unlock();
+    }
+
+private:
+    // Unimplemented copy constructor and assignment operator.
+    AutoMutexLocker();
+    AutoMutexLocker(const AutoMutexLocker&);
+    AutoMutexLocker& operator=(const AutoMutexLocker&);
+
+    CustomThreadMutex& m_mutex;
+};
+

Modified: sandbox/adsk/vik/Common/Foundation/System/Object.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Object.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Object.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -16,6 +16,7 @@
 //
 
 #include "Foundation.h"
+#undef GetClassName
 
 ///////////////////////////////////////////////////////////////////////////////
 /// \brief

Modified: sandbox/adsk/vik/Common/Foundation/System/PacketParser.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/PacketParser.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/PacketParser.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 //-------------------------------------------------------------------------
 //  Constructors and Destructors
 //-------------------------------------------------------------------------
@@ -117,3 +119,5 @@
 
     return ( stat != MgStreamHelper::mssDone ) ? false : true;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/PacketParser.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/PacketParser.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/PacketParser.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,7 @@
 #ifndef MGPACKETPARSER_H_MG
 #define MGPACKETPARSER_H_MG
 
+#if WANT_ACE
 
 /// \cond INTERNAL
 ///////////////////////////////////////////////////////////////////////////
@@ -116,4 +117,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGPACKETPARSER_H_MG

Modified: sandbox/adsk/vik/Common/Foundation/System/Resources.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Resources.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Resources.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,8 +17,10 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
 // Process-wide MgResources
 Ptr<MgResources> MgResources::m_resources = (MgResources*)NULL;
+#endif
 
 const STRING MgResources::DefaultMessageLocale       = L"en";           // Do not translate (ISO 639-1)
 const STRING MgResources::ResourceFilenameExtension  = L".res";         // Do not translate
@@ -163,6 +165,8 @@
 const STRING MgResources::Stylization                   = L"Stylization"; // Do not translate
 const STRING MgResources::WhiteSpace                    = L"\n\r\t ";
 
+#if WANT_ACE
+
 // for locale
 static const STRING ResourceFilenameDash    = L"-";            // Do not translate
 static const int ExtendedLocaleLength       = 5;
@@ -623,3 +627,5 @@
 
     return message;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/Resources.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Resources.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Resources.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -20,6 +20,7 @@
 
 #include <map>
 
+
 class ACE_Configuration_Heap;
 
 typedef std::map<STRING, STRING> ResourceSection;
@@ -47,6 +48,7 @@
     DECLARE_CLASSNAME(MgResources)
 
 INTERNAL_API:
+#if WANT_ACE
     /// \brief
     /// Destructor
     ///
@@ -163,6 +165,7 @@
     ///
     STRING GetResourceMessage(CREFSTRING section, CREFSTRING resourceId,
         MgStringCollection* arguments);
+#endif //WANT_ACE
 
     /// Resource Components
     static const STRING ResourceComponent;
@@ -274,6 +277,7 @@
     static const STRING ResourceFilenameUnderscore;
     static const STRING WhiteSpace;
 
+#if WANT_ACE
 private:
     /// \brief
     /// Constructor
@@ -296,7 +300,9 @@
     STRING m_path;
     ResourceCache m_resourceCache;
     ACE_Recursive_Thread_Mutex m_mutex;
+#endif //WANT_ACE
 };
 /// \endcond
 
+
 #endif

Modified: sandbox/adsk/vik/Common/Foundation/System/Serializable.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Serializable.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Serializable.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -40,6 +40,7 @@
 
 INTERNAL_API:
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -57,6 +58,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream) = 0;
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Foundation/System/Stream.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Stream.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Stream.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 /////////////////////////////////////////////////////////////////
 ///<summary>
 /// Default Constructor
@@ -84,3 +86,5 @@
     MgStreamWriter::m_sHelper = SAFE_ADDREF(helper);
     MgStreamReader::m_sHelper = SAFE_ADDREF(helper);
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/Stream.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Stream.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Stream.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGSTREAM_H_
 #define MGSTREAM_H_
 
+#if WANT_ACE
+
 class MgByteReader;
 class MgStringCollection;
 
@@ -92,4 +94,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGSTREAM_H

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamData.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamData.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamData.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #include "Foundation.h"
 #include "StreamData.h"
 
+#if WANT_ACE
+
 //-------------------------------------------------------------------------
 //  Constructors/Destructors
 //-------------------------------------------------------------------------
@@ -197,3 +199,5 @@
 {
     m_DataRead = total;
 };
+
+#endif
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamData.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamData.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamData.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGSTREAMDATA_H_
 #define MGSTREAMDATA_H_
 
+#if WANT_ACE
+
 class MgStreamHelper;
 
 /// \cond INTERNAL
@@ -73,4 +75,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGSTREAMDATA_H_MG

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamHelper.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamHelper.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamHelper.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -101,7 +101,7 @@
         if (mssDone == stat)
         {
             xstring xStr;
-            UnicodeString::UTF32toUTF16(wideStr, xStr);
+            FoundationUnicodeString::UTF32toUTF16(wideStr, xStr);
             wcStr = (wchar_t*) xStr.c_str();
         }
         delete [] wideStr;
@@ -114,7 +114,7 @@
         if (mssDone == stat)
         {
             lstring lStr;
-            UnicodeString::UTF16toUTF32(wideStr, lStr);
+            FoundationUnicodeString::UTF16toUTF32(wideStr, lStr);
             wcStr = (wchar_t*) lStr.c_str();
         }
         delete [] wideStr;

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamParser.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamParser.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamParser.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -15,6 +15,8 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+#if WANT_ACE
+
 #include "Foundation.h"
 
 //-------------------------------------------------------------------------
@@ -238,3 +240,6 @@
 
     return ret;
 };
+
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamParser.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamParser.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamParser.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGSTREAMPARSER_H_MG
 #define MGSTREAMPARSER_H_MG
 
+#if WANT_ACE
+
 class MgStreamData;
 
 /// \cond INTERNAL
@@ -60,4 +62,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif  //  MGSTREAMPARSER_H_MG

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamReader.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamReader.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamReader.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,7 @@
 #include "Foundation.h"
 #include "ByteSourceSocketStreamImpl.h"
 
+#if WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 ///<summary>
@@ -603,3 +604,5 @@
 {
     m_conn = conn;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamReader.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamReader.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamReader.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef _MGSTREAMREADER_H_
 #define _MGSTREAMREADER_H_
 
+#if WANT_ACE
+
 /// INTERNAL_CLASS
 /// \cond INTERNAL
 class MgServerConnection;
@@ -252,5 +254,7 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif // _MGSTREAMREADER_H_
 

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamWriter.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamWriter.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamWriter.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "Foundation.h"
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 ///<summary>
 /// Constructors
@@ -471,3 +473,5 @@
 
     return stat;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/StreamWriter.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/StreamWriter.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/StreamWriter.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MG_STREAM_WRITER_H
 #define MG_STREAM_WRITER_H
 
+#if WANT_ACE
+
 class MgPacketParser;
 
 /// \cond INTERNAL
@@ -268,4 +270,7 @@
 
 #define MG_STREAM_VERSION   1
 
+#endif //WANT_ACE
+
 #endif // MG_STREAM_WRITER_H
+

Modified: sandbox/adsk/vik/Common/Foundation/System/Util.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Util.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Util.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -16,7 +16,6 @@
 //
 
 #include "Foundation.h"
-#include "UnicodeString.h"
 #include "SetLocale.h"
 #include <math.h>
 
@@ -24,15 +23,16 @@
 #include <iomanip>
 #include <sstream>
 
+#include "FoundationUnicodeString.h"
+
 #ifdef _WIN32
 static HMODULE  m_hFactoryDll;
 #else
 static void* m_hFactoryLib;
 #endif
 
-ACE_Utils::UUID_Generator uuidGenerator;
+#undef min
 
-bool MgUtil::uuidInitialized = false;
 const double MgUtil::DefaultCompareTolerance = 0.01; // 1% margin of error
 
 // Linux process information pseudo-filesystem accessors
@@ -44,6 +44,11 @@
 const STRING MgUtil::sm_classNameQualifier     = L":"; // NOXLATE
 const STRING MgUtil::sm_classPropertyQualifier = L"."; // NOXLATE
 
+#if WANT_ACE
+ACE_Utils::UUID_Generator uuidGenerator;
+
+bool MgUtil::uuidInitialized = false;
+
 void MgUtil::InitializeUuidGenerator()
 {
     if (false == uuidInitialized)
@@ -57,8 +62,10 @@
         }
     }
 }
+#endif //WANT_ACE
 
 
+#if WANT_ACE
 MgObject* MgUtil::CreateMgObject(INT32 classId)
 {
     MgClassFactory* factory = MgClassFactory::GetInstance();
@@ -75,6 +82,7 @@
 
     return obj;
 }
+#endif //WANT_ACE
 
 string MgUtil::Char2Hex(char a)
 {
@@ -87,6 +95,8 @@
     return str;
 }
 
+#if WANT_ACE
+
 MgByteReader* MgUtil::GetByteReader(string &s, STRING* mimeType)
 {
     BYTE_ARRAY_IN bytes = (BYTE_ARRAY_IN)s.c_str();
@@ -139,6 +149,7 @@
     return strTemp;
 }
 
+#endif 
 ///----------------------------------------------------------------------------
 /// <summary>
 /// Converts a wide character string to a multibyte character string.
@@ -183,7 +194,7 @@
 {
     try
     {
-        UnicodeString::WideCharToMultiByte(wcStr.c_str(), mbStr);
+        FoundationUnicodeString::WideCharToMultiByte(wcStr.c_str(), mbStr);
     }
     catch (int)
     {
@@ -222,7 +233,7 @@
 
     try
     {
-        UnicodeString::WideCharToMultiByte(wcBuf, mbStr);
+        FoundationUnicodeString::WideCharToMultiByte(wcBuf, mbStr);
     }
     catch (int)
     {
@@ -288,7 +299,7 @@
 {
     try
     {
-        UnicodeString::MultiByteToWideChar(mbStr.c_str(), wcStr);
+        FoundationUnicodeString::MultiByteToWideChar(mbStr.c_str(), wcStr);
     }
     catch (int)
     {
@@ -327,7 +338,7 @@
 
     try
     {
-        UnicodeString::MultiByteToWideChar(mbBuf, wStr);
+        FoundationUnicodeString::MultiByteToWideChar(mbBuf, wStr);
     }
     catch (int)
     {
@@ -699,6 +710,7 @@
     return (tmp.compare("true") == 0 ? true : false);
 }
 
+#if WANT_ACE
 ///----------------------------------------------------------------------------
 /// <summary>
 /// Generates an Universal Unique IDentifier.
@@ -761,6 +773,8 @@
     MG_CATCH_AND_THROW(L"MgUtil.GenerateUuid")
 }
 
+#endif 
+
 STRING MgUtil::ReplaceEscapeCharInXml(CREFSTRING str)
 {
     STRING newStr;
@@ -807,7 +821,7 @@
 STRING MgUtil::GetResourceMessage(CREFSTRING section, CREFSTRING messageId)
 {
     STRING str;
-
+#if WANT_ACE
     MG_TRY()
 
     MgConfiguration* configuration = MgConfiguration::GetInstance();
@@ -831,7 +845,7 @@
     // If no message is found, we do not fail.
 
     MG_CATCH_AND_RELEASE()
-
+#endif //WANT_ACE
     return str;
 }
 

Modified: sandbox/adsk/vik/Common/Foundation/System/Util.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/Util.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/Util.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -77,6 +77,7 @@
     ///
     static string Char2Hex(char ch);
 
+#if WANT_ACE
     /////////////////////////////////////////////////////////////////
     /// \brief
     /// Creates a reader from string
@@ -112,6 +113,7 @@
     /// String formed from ByteReader
     ///
     static string GetTextFromReader(MgByteReader* byteReader);
+#endif
 
     ///////////////////////////////////////////////////////////////////////////
     /// \brief
@@ -332,6 +334,8 @@
     ///
     static STRING EncodeXss(CREFSTRING str);
 
+#if WANT_ACE
+
     //////////////////////////////////////////////
     /// \brief
     /// Creates an object based on its class Id
@@ -339,6 +343,7 @@
     /// \exception MgNullReferenceException
     ///
     static MgObject* CreateMgObject(INT32 classId);
+#endif //WANT_ACE
 
     ///////////////////////////////////////////////////////////////////////////
     /// \brief
@@ -517,7 +522,10 @@
     /// \exception MgOutOfMemoryException
     ///
     ///
+#if WANT_ACE
     static void GenerateUuid(string& uuid);
+#endif 
+
     static STRING GetResourceMessage(CREFSTRING section, CREFSTRING messageId);
 
     ///////////////////////////////////////////////////////////////////////////

Modified: sandbox/adsk/vik/Common/Foundation/System/XmlDefs.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/XmlDefs.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/XmlDefs.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -20,6 +20,9 @@
 #ifndef MG_XML_DEFS_H_
 #define MG_XML_DEFS_H_
 
+#include "Foundation.h"
+
+#if WANT_XERCES
 // disable C4244 of XSerializeEngine about __w64 int assigned to unsigned long
 #pragma warning(push)
 #pragma warning(disable: 4244)
@@ -101,4 +104,6 @@
 
 #endif
 
+#endif //WANT_XERCES
+
 /// \endcond

Modified: sandbox/adsk/vik/Common/Foundation/System/XmlUtil.cpp
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/XmlUtil.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/XmlUtil.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -16,6 +16,9 @@
 //
 
 #include "Foundation.h"
+
+#if WANT_XERCES
+
 #include "XmlDefs.h"
 #include "XmlUtil.h"
 #include "UnicodeString.h"
@@ -812,3 +815,5 @@
 
     byteReader->ToStringUtf8(str);
 }
+
+#endif //WANT_XERCES
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Foundation/System/XmlUtil.h
===================================================================
--- sandbox/adsk/vik/Common/Foundation/System/XmlUtil.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Foundation/System/XmlUtil.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef MGXML_UTIL_
 #define MGXML_UTIL_
 
+#if WANT_XERCES
+
 /// \cond INTERNAL
 class MG_FOUNDATION_API MgXmlUtil
 {
@@ -107,4 +109,6 @@
 };
 /// \endcond
 
+#endif //WANT_XERCES
+
 #endif // MG_XML_UTIL

Modified: sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #include "GeometryCommon.h"
 #include "AgfStream.h"
 
+#if WANT_ACE
+
 ///////////////////////////////////////////////////////////////////////////
 // Creates an MgAgfReaderWriter object
 //
@@ -121,3 +123,5 @@
 {
     return m_cls_id;
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/AgfReaderWriter.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef _MGAGFREADERWRITER_H_
 #define _MGAGFREADERWRITER_H_
 
+#if WANT_ACE
+
 /// \defgroup MgAgfReaderWriter MgAgfReaderWriter
 /// \ingroup Geometry_Module_classes
 /// \{
@@ -297,4 +299,6 @@
 };
 /// \}
 
+#endif //WANT_ACE
+
 #endif //_MGAGFREADERWRITER_H_

Modified: sandbox/adsk/vik/Common/Geometry/AgfStream.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/AgfStream.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/AgfStream.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -15,6 +15,8 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+#if WANT_ACE
+
 #include "GeometryCommon.h"
 #include "AgfStream.h"
 
@@ -271,3 +273,5 @@
 {
     throw new MgNotImplementedException(L"MgAgfStream.WriteControlPacket", __LINE__, __WFILE__, NULL, L"", NULL);
 }
+
+#endif //WANT_ACE
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Geometry/AgfStream.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/AgfStream.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/AgfStream.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -18,6 +18,8 @@
 #ifndef _MGAGFSTREAM_H_
 #define _MGAGFSTREAM_H_
 
+#if WANT_ACE
+
 /// \cond INTERNAL
 ///////////////////////////////////////////////////////////////////////////
 //  The MgAgfStream class provides an interface to read and write data
@@ -449,4 +451,6 @@
 };
 /// \endcond
 
+#endif //WANT_ACE
+
 #endif // _MGAGFSTREAM_H_

Modified: sandbox/adsk/vik/Common/Geometry/Coordinate.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Coordinate.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Coordinate.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -189,6 +189,7 @@
     ///
     virtual INT32 GetClassId();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -206,6 +207,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream) = 0;
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -56,7 +56,7 @@
 ///
 void MgCoordinateSystemCache::Clear()
 {
-    ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex));
+    AutoMutexLocker lock(m_mutex);
 
     for (MgCoordinateSystemMap::iterator i = m_coordinateSystemMap.begin();
         i != m_coordinateSystemMap.end(); ++i)
@@ -92,7 +92,7 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 
-    ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex));
+    AutoMutexLocker lock(m_mutex);
 
     SAFE_RELEASE(m_coordinateSystemMap[key]);
     m_coordinateSystemMap[key] = SAFE_ADDREF(value);
@@ -120,7 +120,7 @@
             __LINE__, __WFILE__, NULL, L"", NULL);
     }
 
-    ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, m_mutex, NULL));
+    AutoMutexLocker lock(m_mutex);
 
     return SAFE_ADDREF(m_coordinateSystemMap[key]);
 }

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemCache.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -55,7 +55,7 @@
 
     static MgCoordinateSystemCache sm_coordinateSystemCache;
 
-    ACE_Recursive_Thread_Mutex m_mutex;
+    CustomThreadMutex m_mutex;
     MgCoordinateSystemMap m_coordinateSystemMap;
 };
 

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -27,7 +27,7 @@
 /// Basic functionality for all kinds of dictionaries
 ///
 
-class MgCoordinateSystemDictionaryBase : public MgGuardDisposable
+class MG_GEOMETRY_API MgCoordinateSystemDictionaryBase : public MgGuardDisposable
 {
     DECLARE_CLASSNAME(MgCoordinateSystemDictionaryBase)
 

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemFactory.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemFactory.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateSystem/CoordinateSystemFactory.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -41,6 +41,10 @@
 #include "CoordinateSystemFactory.h"    //for MgCoordinateSystemFactory
 #include "CoordinateSystemCache.h"
 
+#include "System/Mutex.h"
+CustomThreadMutex g_mutex;
+
+
 using namespace CSLibrary;
 
 // Dummy class used to automate initialization/uninitialization of the CoordinateSystemCatalog.
@@ -69,7 +73,7 @@
     if (sm_pCatalog == NULL)
     {
         // Perform Double-Checked Locking Optimization.
-        ACE_MT (ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Static_Object_Lock::instance()));
+        AutoMutexLocker lock(g_mutex);
         if (sm_pCatalog == NULL)
         {
             //the catalog opens dictionaries for read by default

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXY.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXY.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXY.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -123,6 +123,7 @@
     return new MgCoordinateXY(m_x, m_y);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -140,6 +141,7 @@
     stream->GetDouble(m_x);
     stream->GetDouble(m_y);
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Test 2 coordinates for equality

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXY.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXY.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXY.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -126,6 +126,7 @@
     ///
     MgCoordinate* Copy();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -143,6 +144,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYM.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYM.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYM.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -125,6 +125,7 @@
     return new MgCoordinateXYM(m_x, m_y, m_m);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -144,6 +145,7 @@
     stream->GetDouble(m_y);
     stream->GetDouble(m_m);
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Test 2 coordinates for equality

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYM.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYM.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYM.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -129,6 +129,7 @@
     ///
     MgCoordinate* Copy();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -146,6 +147,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -126,6 +126,7 @@
     return new MgCoordinateXYZ(m_x, m_y, m_z);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -145,6 +146,7 @@
     stream->GetDouble(m_y);
     stream->GetDouble(m_z);
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Test 2 coordinates for equality

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYZ.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -126,6 +126,7 @@
     ///
     MgCoordinate* Copy();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -143,6 +144,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -127,6 +127,7 @@
     return new MgCoordinateXYZM(m_x, m_y, m_z, m_m);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -148,6 +149,7 @@
     stream->GetDouble(m_z);
     stream->GetDouble(m_m);
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Test 2 coordinates for equality

Modified: sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CoordinateXYZM.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -129,6 +129,7 @@
     ///
     MgCoordinate* Copy();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -146,6 +147,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CurvePolygon.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CurvePolygon.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CurvePolygon.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -157,6 +157,7 @@
     delete this;
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -227,6 +228,7 @@
     else
         m_innerRings = NULL;
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 ///<summary>

Modified: sandbox/adsk/vik/Common/Geometry/CurvePolygon.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CurvePolygon.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CurvePolygon.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -334,6 +334,7 @@
     ///
     MgCurvePolygon();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -351,6 +352,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/CurveString.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CurveString.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CurveString.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -169,6 +169,7 @@
     delete this;
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -236,6 +237,7 @@
         startCoord = segment->GetEndCoordinate();
     }
 }
+#endif //WANT_ACE
 
 STRING MgCurveString::ToAwkt(bool is2dOnly)
 {

Modified: sandbox/adsk/vik/Common/Geometry/CurveString.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/CurveString.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/CurveString.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -359,6 +359,7 @@
     ///
     MgCurveString();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -376,6 +377,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/Envelope.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Envelope.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Envelope.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -375,6 +375,7 @@
     delete this;
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -414,6 +415,7 @@
     STRING mimeType = MgMimeType::Xml;
     return MgUtil::GetByteReader(str, &mimeType);
 }
+#endif //WANT_ACE
 
 void MgEnvelope::ToXml(string& str)
 {

Modified: sandbox/adsk/vik/Common/Geometry/Envelope.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Envelope.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Envelope.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -430,6 +430,7 @@
     ///
     virtual INT32 GetClassId();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -448,9 +449,11 @@
     ///
     virtual void Deserialize(MgStream* stream);
 
-    virtual void ToXml(string& str);
     MgByteReader* ToXml();
+#endif //WANT_ACE
 
+    virtual void ToXml(string& str);
+    
     void Grow(double offset);
 
 protected:

Modified: sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj	2011-12-05 17:52:42 UTC (rev 6288)
@@ -90,13 +90,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GEOMETRY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
+      <MinimalRebuild>false</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <AdditionalDependencies>csmapd.lib;ACEd.lib;GEOSd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -116,13 +117,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GEOMETRY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
+      <MinimalRebuild>false</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <AdditionalDependencies>csmapd.lib;ACEd.lib;GEOSd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -139,11 +141,12 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;GEOMETRY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <AdditionalDependencies>csmap.lib;ACE.lib;GEOS.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -165,11 +168,12 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\ACE\ACE_wrappers;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\CoordinateSystem;..\Foundation;..\Geometry;..\..\Oem\geos-2.2.0\source\headers;..\..\Oem\CsMap\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;GEOMETRY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <AdditionalDependencies>csmap.lib;ACE.lib;GEOS.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -186,6 +190,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\CoordinateSystem\CriticalSection.cpp" />
     <ClCompile Include="Buffer\BorderWalker.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -552,7 +557,6 @@
     <ClCompile Include="..\CoordinateSystem\CoordSysTransform.cpp" />
     <ClCompile Include="..\CoordinateSystem\CoordSysUnitInformation.cpp" />
     <ClCompile Include="..\CoordinateSystem\CoordSysUtil.cpp" />
-    <ClCompile Include="..\CoordinateSystem\CriticalSection.cpp" />
     <ClCompile Include="..\CoordinateSystem\MentorDictionary.cpp" />
     <ClCompile Include="..\CoordinateSystem\MentorUtil.cpp" />
     <ClCompile Include="..\CoordinateSystem\namestruct.cpp" />
@@ -832,6 +836,7 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="..\CoordinateSystem\CriticalSection.h" />
     <ClInclude Include="Buffer\BorderWalker.h" />
     <ClInclude Include="Buffer\buffer.h" />
     <ClInclude Include="Buffer\bufraloc.h" />
@@ -1003,7 +1008,6 @@
     <ClInclude Include="..\CoordinateSystem\CoordSysType.h" />
     <ClInclude Include="..\CoordinateSystem\CoordSysUnitInformation.h" />
     <ClInclude Include="..\CoordinateSystem\CoordSysUtil.h" />
-    <ClInclude Include="..\CoordinateSystem\CriticalSection.h" />
     <ClInclude Include="..\CoordinateSystem\CsmapVersion.h" />
     <ClInclude Include="..\CoordinateSystem\MentorDictionary.h" />
     <ClInclude Include="..\CoordinateSystem\MentorUtil.h" />

Modified: sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj.filters
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj.filters	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Geometry.vcxproj.filters	2011-12-05 17:52:42 UTC (rev 6288)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
     <Filter Include="Buffer">
@@ -309,9 +309,6 @@
     <ClCompile Include="..\CoordinateSystem\CoordSysUtil.cpp">
       <Filter>CoordinateSystem_IMP</Filter>
     </ClCompile>
-    <ClCompile Include="..\CoordinateSystem\CriticalSection.cpp">
-      <Filter>CoordinateSystem_IMP</Filter>
-    </ClCompile>
     <ClCompile Include="..\CoordinateSystem\MentorDictionary.cpp">
       <Filter>CoordinateSystem_IMP</Filter>
     </ClCompile>
@@ -372,6 +369,9 @@
     <ClCompile Include="Region.cpp" />
     <ClCompile Include="Ring.cpp" />
     <ClCompile Include="WktReaderWriter.cpp" />
+    <ClCompile Include="..\CoordinateSystem\CriticalSection.cpp">
+      <Filter>CoordinateSystem_IMP</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Buffer\BorderWalker.h">
@@ -887,9 +887,6 @@
     <ClInclude Include="..\CoordinateSystem\CoordSysUtil.h">
       <Filter>CoordinateSystem_IMP</Filter>
     </ClInclude>
-    <ClInclude Include="..\CoordinateSystem\CriticalSection.h">
-      <Filter>CoordinateSystem_IMP</Filter>
-    </ClInclude>
     <ClInclude Include="..\CoordinateSystem\CsmapVersion.h">
       <Filter>CoordinateSystem_IMP</Filter>
     </ClInclude>
@@ -970,8 +967,11 @@
     <ClInclude Include="Ring.h" />
     <ClInclude Include="Transform.h" />
     <ClInclude Include="WktReaderWriter.h" />
+    <ClInclude Include="..\CoordinateSystem\CriticalSection.h">
+      <Filter>CoordinateSystem_IMP</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Geometry.rc" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: sandbox/adsk/vik/Common/Geometry/GeometryClassFactory.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/GeometryClassFactory.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/GeometryClassFactory.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -26,6 +26,7 @@
 
 bool InitializeStaticData()
 {
+#if WANT_ACE
     MgClassFactory* fact = MgClassFactory::GetInstance();
 
     // Put in the map any class that can be serialized
@@ -58,7 +59,7 @@
     EXCEPTION_CLASS_CREATOR(MgInvalidCoordinateSystemException)
     EXCEPTION_CLASS_CREATOR(MgInvalidCoordinateSystemTypeException)
     EXCEPTION_CLASS_CREATOR(MgInvalidCoordinateSystemUnitsException)
-
+#endif //WANT_ACE
     return true;
 }
 

Modified: sandbox/adsk/vik/Common/Geometry/GeometryUtil.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/GeometryUtil.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/GeometryUtil.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -17,6 +17,8 @@
 
 #include "GeometryCommon.h"
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 // Read a coordinate object from a stream
 //
@@ -191,6 +193,8 @@
     return new MgLinearRing(coordinates);
 }
 
+#endif //WANT_ACE
+
 //////////////////////////////////////////////
 // Compute the envelope enclosing a line string
 //

Modified: sandbox/adsk/vik/Common/Geometry/GeometryUtil.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/GeometryUtil.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/GeometryUtil.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -23,6 +23,7 @@
 {
 INTERNAL_API:
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Deserialize a coordinate object from a stream
@@ -58,6 +59,7 @@
     /// Write an MgLinearRing object to a stream
     ///
     static void WriteLinearRing(MgStream* stream, MgLinearRing* ring);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////
     /// Compute the envelope enclosing a line string

Modified: sandbox/adsk/vik/Common/Geometry/LineString.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/LineString.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/LineString.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -163,6 +163,8 @@
     delete this;
 }
 
+#if WANT_ACE
+
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -219,6 +221,8 @@
     }
 }
 
+#endif //WANT_ACE
+
 STRING MgLineString::ToAwkt(bool is2dOnly)
 {
     STRING tempAwkt, coordDim;

Modified: sandbox/adsk/vik/Common/Geometry/LineString.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/LineString.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/LineString.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -255,6 +255,7 @@
     ///
     MgLineString();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -272,7 +273,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
-
+#endif //WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/Measure.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Measure.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Measure.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -31,7 +31,7 @@
 /// This is a base class, not designed to be used directly. Use
 /// the derived class.
 ///
-class MgMeasure : public MgGuardDisposable
+class MG_GEOMETRY_API MgMeasure : public MgGuardDisposable
 {
 EXTERNAL_API:
 

Modified: sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -114,6 +114,7 @@
     return new MgMultiCurvePolygon(polygons);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -152,6 +153,7 @@
         m_polygons->Add(polygon);
     }
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiCurvePolygon.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -250,6 +250,7 @@
     ///
     MgMultiCurvePolygon();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -267,6 +268,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/MultiCurveString.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiCurveString.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiCurveString.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -114,6 +114,7 @@
     return new MgMultiCurveString(curveStrings);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -154,6 +155,7 @@
         m_curveStrings->Add(curveString);
     }
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/MultiCurveString.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiCurveString.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiCurveString.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -254,6 +254,7 @@
     ///
     MgMultiCurveString();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -271,6 +272,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/MultiGeometry.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiGeometry.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiGeometry.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -115,6 +115,7 @@
     return new MgMultiGeometry(geometries);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -192,7 +193,9 @@
         m_geometries->Add(geometry);
     }
 }
+#endif //WANT_ACE
 
+
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class
 //

Modified: sandbox/adsk/vik/Common/Geometry/MultiGeometry.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiGeometry.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiGeometry.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -253,6 +253,7 @@
     ///
     MgMultiGeometry();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -270,6 +271,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/MultiLineString.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiLineString.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiLineString.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -114,6 +114,7 @@
     return new MgMultiLineString(lineStrings);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -154,6 +155,7 @@
         m_lineStrings->Add(lineString);
     }
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/MultiLineString.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiLineString.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiLineString.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -240,6 +240,7 @@
     ///
     MgMultiLineString();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -257,6 +258,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/MultiPoint.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiPoint.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiPoint.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -114,6 +114,7 @@
     return new MgMultiPoint(points);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -152,6 +153,7 @@
         m_points->Add(point);
     }
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/MultiPoint.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiPoint.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiPoint.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -242,6 +242,7 @@
     ///
     MgMultiPoint();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -259,6 +260,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/MultiPolygon.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiPolygon.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiPolygon.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -114,6 +114,7 @@
     return new MgMultiPolygon(polygons);
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -152,6 +153,7 @@
         m_polygons->Add(polygon);
     }
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 // Get the unique identifier for the class

Modified: sandbox/adsk/vik/Common/Geometry/MultiPolygon.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/MultiPolygon.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/MultiPolygon.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -280,6 +280,7 @@
     ///
     MgMultiPolygon();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -297,6 +298,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/Point.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Point.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Point.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -119,6 +119,7 @@
     delete this;
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -155,6 +156,7 @@
     //Position
     m_coord = MgGeometryUtil::ReadCoordinate(stream, coordinateDimension);
 }
+#endif //WANT_ACE
 
 STRING MgPoint::ToAwkt(bool is2dOnly)
 {

Modified: sandbox/adsk/vik/Common/Geometry/Point.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Point.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Point.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -241,6 +241,7 @@
     ///
     MgPoint();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -258,6 +259,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     //////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/adsk/vik/Common/Geometry/Polygon.cpp
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Polygon.cpp	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Polygon.cpp	2011-12-05 17:52:42 UTC (rev 6288)
@@ -157,6 +157,7 @@
     delete this;
 }
 
+#if WANT_ACE
 //////////////////////////////////////////////////////////////////
 // Serialize data to a stream
 //
@@ -227,6 +228,7 @@
     else
         m_innerRings = NULL;
 }
+#endif //WANT_ACE
 
 //////////////////////////////////////////////////////////////////
 void MgPolygon::ToXml(std::string& str)

Modified: sandbox/adsk/vik/Common/Geometry/Polygon.h
===================================================================
--- sandbox/adsk/vik/Common/Geometry/Polygon.h	2011-12-05 17:34:56 UTC (rev 6287)
+++ sandbox/adsk/vik/Common/Geometry/Polygon.h	2011-12-05 17:52:42 UTC (rev 6288)
@@ -386,6 +386,7 @@
     ///
     MgPolygon();
 
+#if WANT_ACE
     //////////////////////////////////////////////////////////////////
     /// \brief
     /// Serialize data to TCP/IP stream
@@ -403,6 +404,7 @@
     /// Stream
     ///
     virtual void Deserialize(MgStream* stream);
+#endif //WANT_ACE
 
     ///////////////////////////////////////////////////////////////////////////
     /// \brief



More information about the mapguide-commits mailing list