[fdo-commits] r702 - branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry

svn_fdo at osgeo.org svn_fdo at osgeo.org
Thu Feb 1 19:09:08 EST 2007


Author: gregboone
Date: 2007-02-01 19:09:07 -0500 (Thu, 01 Feb 2007)
New Revision: 702

Modified:
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygon.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygonImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstract.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstractImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveString.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveStringImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPosition.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPositionImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometry.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometryImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineString.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineStringImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRing.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRingImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPoint.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPointImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygon.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygonImp.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRing.h
   branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRingImp.h
Log:
893057: DOC: FDO Managed API Documentation Updates

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygon.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygon.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygon.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -16,11 +16,12 @@
 *
 */
 
-
 #pragma once
 
 #include "mgISurfaceAbstract.h"
 
+class FdoCurvePolygonCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IRing;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -62,6 +63,270 @@
     /// 
 	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_InteriorRing(System::Int32 index);
 };
+
+
+/// \brief
+/// The CurvePolygonCollection class is a collection of CurvePolygon objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class CurvePolygonCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a CurvePolygonCollection managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed object should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	CurvePolygonCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoCurvePolygonCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		CurvePolygonCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+	public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(CurvePolygonCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first object in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+		System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+		System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of CurveSegmentCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	CurvePolygonCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th ICurvePolygon from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a ICurvePolygon object into the collection.
+    /// 
+    /// \param value 
+    /// Input the ICurvePolygon object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
+
+    /// \brief
+    /// Determines the index of a specific ICurvePolygon object.
+    /// 
+    /// \param value 
+    /// Input the ICurvePolygon object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
+
+    /// \brief
+    /// Inserts an ICurvePolygon object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the ICurvePolygon object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific ICurvePolygon object.
+    /// 
+    /// \param value 
+    /// Input the ICurvePolygon object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific ICurvePolygon object.
+    /// 
+    /// \param value 
+    /// Input The ICurvePolygon object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ICurvePolygon in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurvePolygon to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurvePolygon at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurvePolygon to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurvePolygon
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *value);
+
+    /// \brief
+    /// Gets an ICurvePolygon in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurvePolygon to retrieve.
+    /// 
+    /// \return
+    /// Returns the ICurvePolygon at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurvePolygon at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurvePolygon to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurvePolygon
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygonImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygonImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurvePolygonImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -16,13 +16,13 @@
 *
 */
 
-
 #pragma once
+
 #include "mgISurfaceAbstractImp.h"
 #include "mgICurvePolygon.h"
 
 class FdoICurvePolygon;
-class FdoCurvePolygonCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IRing;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -81,240 +81,6 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_InteriorRing(System::Int32 index);
 };
 
-/// \brief
-/// The CurvePolygonCollection class is a collection of CurvePolygon objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class CurvePolygonCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a CurvePolygonCollection managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed object should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	CurvePolygonCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoCurvePolygonCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		CurvePolygonCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-	public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(CurvePolygonCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first object in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-		System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-		System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of CurveSegmentCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	CurvePolygonCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th ICurvePolygon from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a ICurvePolygon object into the collection.
-    /// 
-    /// \param value 
-    /// Input the ICurvePolygon object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
-
-    /// \brief
-    /// Determines the index of a specific ICurvePolygon object.
-    /// 
-    /// \param value 
-    /// Input the ICurvePolygon object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
-
-    /// \brief
-    /// Inserts an ICurvePolygon object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the ICurvePolygon object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific ICurvePolygon object.
-    /// 
-    /// \param value 
-    /// Input the ICurvePolygon object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific ICurvePolygon object.
-    /// 
-    /// \param value 
-    /// Input The ICurvePolygon object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an ICurvePolygon in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ICurvePolygon to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ICurvePolygon at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ICurvePolygon to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ICurvePolygon
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *value);
-
-    /// \brief
-    /// Gets an ICurvePolygon in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ICurvePolygon to retrieve.
-    /// 
-    /// \return
-    /// Returns the ICurvePolygon at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ICurvePolygon at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ICurvePolygon to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ICurvePolygon
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstract.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstract.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstract.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -19,6 +19,8 @@
 
 #pragma once
 
+class FdoCurveSegmentCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 
 public __gc __interface IEnvelope;
@@ -97,6 +99,268 @@
 	__property System::Int32 get_Dimensionality();
 
 };
+
+/// \brief
+/// The CurveSegmentCollection class represents a collection of CurveSegment objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class CurveSegmentCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a CurveSegmentCollection managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed object should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	CurveSegmentCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoCurveSegmentCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		CurveSegmentCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(CurveSegmentCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of CurveSegmentCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	CurveSegmentCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th ICurveSegmentAbstract from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a ICurveSegmentAbstract object into the collection.
+    /// 
+    /// \param value 
+    /// Input the ICurveSegmentAbstract object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
+
+    /// \brief
+    /// Determines the index of a specific ICurveSegmentAbstract object.
+    /// 
+    /// \param value 
+    /// Input the ICurveSegmentAbstract object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
+
+    /// \brief
+    /// Inserts an ICurveSegmentAbstract object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the ICurveSegmentAbstract object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific ICurveSegmentAbstract object.
+    /// 
+    /// \param value 
+    /// Input the ICurveSegmentAbstract object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific ICurveSegmentAbstract object.
+    /// 
+    /// \param value 
+    /// Input The ICurveSegmentAbstract object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ICurveSegmentAbstract in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurveSegmentAbstract to retrieve
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurveSegmentAbstract object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurveSegmentAbstract object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurveSegmentAbstract object
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
+
+    /// \brief
+    /// Gets an ICurveSegmentAbstract object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurveSegmentAbstract object to retrieve.
+    /// 
+    /// \return
+    /// Returns the ICurveSegmentAbstract object at the specified index.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurveSegmentAbstract object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurveSegmentAbstract object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurveSegmentAbstract object.
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstractImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstractImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveSegmentAbstractImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,6 @@
 #include "mgICurveSegmentAbstract.h"
 
 class FdoICurveSegmentAbstract;
-class FdoCurveSegmentCollection;
 
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 
@@ -123,237 +122,6 @@
 	FdoICurveSegmentAbstract *GetImpObj();
 };
 
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class CurveSegmentCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a CurveSegmentCollection managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed object should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	CurveSegmentCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoCurveSegmentCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		CurveSegmentCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(CurveSegmentCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of CurveSegmentCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	CurveSegmentCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    ///   Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    ///   Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th ICurveSegmentAbstract from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a ICurveSegmentAbstract object into the collection.
-    /// 
-    /// \param value 
-    /// Input the ICurveSegmentAbstract object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
-
-    /// \brief
-    /// Determines the index of a specific ICurveSegmentAbstract object.
-    /// 
-    /// \param value 
-    /// Input the ICurveSegmentAbstract object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
-
-    /// \brief
-    /// Inserts an ICurveSegmentAbstract object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the ICurveSegmentAbstract object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific ICurveSegmentAbstract object.
-    /// 
-    /// \param value 
-    /// Input the ICurveSegmentAbstract object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific ICurveSegmentAbstract object.
-    /// 
-    /// \param value 
-    /// Input The ICurveSegmentAbstract object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an ICurveSegmentAbstract in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ICurveSegmentAbstract to retrieve
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the object
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
-
-    /// \brief
-    /// Gets am object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the object to retrieve.
-    /// 
-    /// \return
-    /// Returns the object at the specified index.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the object.
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
-};
-	
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveString.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveString.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveString.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -18,8 +18,11 @@
 
 
 #pragma once
+
 #include "mgICurveAbstract.h"
 
+class FdoCurveStringCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ICurveSegmentAbstract;
 public __gc class CurveSegmentCollection;
@@ -60,6 +63,269 @@
     /// 
 	__property NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection *get_CurveSegments();
 };
+
+/// \brief
+/// The CurveStringCollection class is a collection of CurvePolygon objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class CurveStringCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a CurveStringCollection managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed object should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	CurveStringCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoCurveStringCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		CurveStringCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(CurveStringCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of CurveSegmentCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	CurveStringCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th ICurveString from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a ICurveString object into the collection.
+    /// 
+    /// \param value 
+    /// Input the ICurveString object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
+
+    /// \brief
+    /// Determines the index of a specific ICurveString object.
+    /// 
+    /// \param value 
+    /// Input the ICurveString object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
+
+    /// \brief
+    /// Inserts an ICurveString object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the ICurveString object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
+
+    /// \brief
+    /// Removes the first occurrence of a specific ICurveString object.
+    /// 
+    /// \param value 
+    /// Input the ICurveString object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific ICurveString object.
+    /// 
+    /// \param value 
+    /// Input The ICurveString object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveString* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ICurveString in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurveString to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurveString *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurveString at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurveString to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurveString
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString *value);
+
+    /// \brief
+    /// Gets an ICurveString in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ICurveString to retrieve.
+    /// 
+    /// \return
+    /// Returns the ICurveString at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ICurveString *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ICurveString at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ICurveString to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ICurveString
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveStringImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveStringImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgICurveStringImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,7 @@
 #include "mgICurveAbstractImp.h"
 
 class FdoICurveString;
-class FdoCurveStringCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ICurveSegmentAbstract;
 public __gc class CurveSegmentCollection;
@@ -81,240 +81,6 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection *get_CurveSegments();
 };
 
-/// \brief
-/// The CurveStringCollection class is a collection of CurvePolygon objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class CurveStringCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a CurveStringCollection managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed object should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	CurveStringCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoCurveStringCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// A Nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		CurveStringCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(CurveStringCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of CurveSegmentCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	CurveStringCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th ICurveString from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a ICurveString object into the collection.
-    /// 
-    /// \param value 
-    /// Input the ICurveString object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
-
-    /// \brief
-    /// Determines the index of a specific ICurveString object.
-    /// 
-    /// \param value 
-    /// Input the ICurveString object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
-
-    /// \brief
-    /// Inserts an ICurveString object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the ICurveString object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
-
-    /// \brief
-    /// Removes the first occurrence of a specific ICurveString object.
-    /// 
-    /// \param value 
-    /// Input the ICurveString object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific ICurveString object.
-    /// 
-    /// \param value 
-    /// Input The ICurveString object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveString* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveString* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an ICurveString in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ICurveString to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurveString *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ICurveString at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ICurveString to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ICurveString
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString *value);
-
-    /// \brief
-    /// Gets an ICurveString in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ICurveString to retrieve.
-    /// 
-    /// \return
-    /// Returns the ICurveString at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ICurveString *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ICurveString at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ICurveString to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ICurveString
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveString *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPosition.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPosition.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPosition.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -16,9 +16,10 @@
 *
 */
 
-
 #pragma once
 
+class FdoDirectPositionCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 
 /// \brief
@@ -76,6 +77,270 @@
     /// 
     __property System::Int32 get_Dimensionality();
 };
+
+
+/// \brief
+/// The DirectPositionCollection class is a collection of DirectPosition objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class DirectPositionCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a DirectPositionCollection managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed object should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	DirectPositionCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoDirectPositionCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		DirectPositionCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(DirectPositionCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+public:
+    /// \brief
+    /// Creates an instance of DirectPositionCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	DirectPositionCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th IDirectPosition from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a IDirectPosition object into the collection.
+    /// 
+    /// \param value 
+    /// Input the IDirectPosition object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
+
+    /// \brief
+    /// Determines the index of a specific IDirectPosition object.
+    /// 
+    /// \param value 
+    /// Input the IDirectPosition object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
+
+    /// \brief
+    /// Inserts an IDirectPosition object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    ///
+    /// \param value 
+    /// Input the IDirectPosition object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific IDirectPosition object.
+    /// 
+    /// \param value 
+    /// Input the IDirectPosition object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific IDirectPosition object.
+    /// 
+    /// \param value 
+    /// Input The IDirectPosition object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    ///
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an IDirectPosition in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IDirectPosition to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IDirectPosition at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IDirectPosition to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IDirectPosition
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *value);
+
+    /// \brief
+    /// Gets an IDirectPosition in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IDirectPosition to retrieve.
+    /// 
+    /// \return
+    /// Returns the IDirectPosition at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IDirectPosition at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IDirectPosition to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IDirectPosition
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPositionImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPositionImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIDirectPositionImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,6 @@
 #include "mgIDirectPosition.h"
 
 class FdoIDirectPosition;
-class FdoDirectPositionCollection;
 
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 
@@ -103,240 +102,6 @@
 	FdoIDirectPosition *GetImpObj();
 };
 
-/// \brief
-/// The DirectPositionCollection class is a collection of DirectPosition objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class DirectPositionCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a DirectPositionCollection managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed object should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	DirectPositionCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoDirectPositionCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// A Nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		DirectPositionCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(DirectPositionCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-public:
-    /// \brief
-    /// Creates an instance of DirectPositionCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	DirectPositionCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th IDirectPosition from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a IDirectPosition object into the collection.
-    /// 
-    /// \param value 
-    /// Input the IDirectPosition object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
-
-    /// \brief
-    /// Determines the index of a specific IDirectPosition object.
-    /// 
-    /// \param value 
-    /// Input the IDirectPosition object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
-
-    /// \brief
-    /// Inserts an IDirectPosition object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    ///
-    /// \param value 
-    /// Input the IDirectPosition object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific IDirectPosition object.
-    /// 
-    /// \param value 
-    /// Input the IDirectPosition object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific IDirectPosition object.
-    /// 
-    /// \param value 
-    /// Input The IDirectPosition object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    ///
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an IDirectPosition in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IDirectPosition to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the IDirectPosition at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the IDirectPosition to set.
-    /// 
-    /// \param value 
-    /// Input the value of the IDirectPosition
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *value);
-
-    /// \brief
-    /// Gets an IDirectPosition in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IDirectPosition to retrieve.
-    /// 
-    /// \return
-    /// Returns the IDirectPosition at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the IDirectPosition at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the IDirectPosition to set.
-    /// 
-    /// \param value 
-    /// Input the value of the IDirectPosition
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometry.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometry.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometry.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -19,6 +19,8 @@
 
 #pragma once
 
+class FdoGeometryCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IEnvelope;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -78,6 +80,268 @@
 	__property System::String* get_Text();
 };
 
+/// \brief
+/// The GeometryCollection class is a collection of Geometry objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class GeometryCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a GeometryCollection managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed object should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	GeometryCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoGeometryCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		GeometryCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+	public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(GeometryCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+		System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+		System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of GeometryCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	GeometryCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th IGeometry from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a IGeometry object into the collection.
+    /// 
+    /// \param value 
+    /// Input the IGeometry object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
+
+    /// \brief
+    /// Determines the index of a specific IGeometry object.
+    /// 
+    /// \param value 
+    /// Input the IGeometry object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
+
+    /// \brief
+    /// Inserts an IGeometry object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the IGeometry object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific IGeometry object.
+    /// 
+    /// \param value 
+    /// Input the IGeometry object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific IGeometry object.
+    /// 
+    /// \param value 
+    /// Input The IGeometry object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IGeometry* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an IGeometry object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IGeometry object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IGeometry *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IGeometry object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IGeometry object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IGeometry
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry *value);
+
+    /// \brief
+    /// Gets an IGeometry object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IGeometry object to retrieve.
+    /// 
+    /// \return
+    /// Returns the IGeometry object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IGeometry *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IGeometry object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IGeometry object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IGeometry object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometryImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometryImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIGeometryImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,6 @@
 #include "mgIGeometry.h"
 
 class FdoIGeometry;
-class FdoGeometryCollection;
 
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IEnvelope;
@@ -106,240 +105,6 @@
 	FdoIGeometry *GetImpObj();
 };
 
-/// \brief
-/// The GeometryCollection class is a collection of Geometry objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class GeometryCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a GeometryCollection managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed object should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	GeometryCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoGeometryCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// A Nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		GeometryCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-	public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(GeometryCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-		System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-		System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of GeometryCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	GeometryCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th IGeometry from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a IGeometry object into the collection.
-    /// 
-    /// \param value 
-    /// Input the IGeometry object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
-
-    /// \brief
-    /// Determines the index of a specific IGeometry object.
-    /// 
-    /// \param value 
-    /// Input the IGeometry object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
-
-    /// \brief
-    /// Inserts an IGeometry object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the IGeometry object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific IGeometry object.
-    /// 
-    /// \param value 
-    /// Input the IGeometry object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific IGeometry object.
-    /// 
-    /// \param value 
-    /// Input The IGeometry object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IGeometry* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IGeometry* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an IGeometry object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IGeometry object to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IGeometry *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the IGeometry object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the IGeometry object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the IGeometry
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry *value);
-
-    /// \brief
-    /// Gets an IGeometry object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IGeometry object to retrieve.
-    /// 
-    /// \return
-    /// Returns the IGeometry object at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IGeometry *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the IGeometry object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the IGeometry object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the IGeometry object
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IGeometry *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineString.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineString.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineString.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -18,8 +18,11 @@
 
 
 #pragma once
+
 #include "mgICurveAbstract.h"
 
+class FdoLineStringCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 public __gc class DirectPositionCollection;
@@ -92,6 +95,268 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection *get_Positions();
 };
 
+/// \brief
+///  The LineStringCollection class is a collection of LineString objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class LineStringCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed element should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	LineStringCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoLineStringCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		LineStringCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(LineStringCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    ///  Creates an instance of LineStringCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	LineStringCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th ILineString from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a ILineString object into the collection.
+    /// 
+    /// \param value 
+    /// Input the ILineString object to add.
+    /// 
+    /// \return
+    /// 		The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
+
+    /// \brief
+    /// Determines the index of a specific ILineString object.
+    /// 
+    /// \param value 
+    /// Input the ILineString object to locate in the collection.
+    /// 
+    /// \return
+    /// 		The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
+
+    /// \brief
+    /// Inserts an ILineString object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the ILineString object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific ILineString object.
+    /// 
+    /// \param value 
+    /// Input the ILineString object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific ILineString object.
+    /// 
+    /// \param value 
+    /// Input The ILineString object to locate in the collection.
+    /// 
+    /// \return
+    /// 		True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ILineString* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ILineString object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ILineString *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ILineString object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ILineString
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString *value);
+
+    /// \brief
+    /// Gets an ILineString object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to retrieve.
+    /// 
+    /// \return
+    /// Returns the ILineString object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ILineString *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ILineString object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ILineString object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineStringImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineStringImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILineStringImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,7 @@
 #include "mgICurveAbstractImp.h"
 
 class FdoILineString;
-class FdoLineStringCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 public __gc class DirectPositionCollection;
@@ -112,240 +112,6 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection *get_Positions();
 };
 
-/// \brief
-///  The LineStringCollection class is a collection of LineString objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class LineStringCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed element should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	LineStringCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoLineStringCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// A Nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		LineStringCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(LineStringCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    ///  Creates an instance of LineStringCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	LineStringCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th ILineString from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a ILineString object into the collection.
-    /// 
-    /// \param value 
-    /// Input the ILineString object to add.
-    /// 
-    /// \return
-    /// 		The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
-
-    /// \brief
-    /// Determines the index of a specific ILineString object.
-    /// 
-    /// \param value 
-    /// Input the ILineString object to locate in the collection.
-    /// 
-    /// \return
-    /// 		The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
-
-    /// \brief
-    /// Inserts an ILineString object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the ILineString object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific ILineString object.
-    /// 
-    /// \param value 
-    /// Input the ILineString object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific ILineString object.
-    /// 
-    /// \param value 
-    /// Input The ILineString object to locate in the collection.
-    /// 
-    /// \return
-    /// 		True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ILineString* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ILineString* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an ILineString object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ILineString object to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ILineString *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ILineString object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ILineString object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ILineString
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString *value);
-
-    /// \brief
-    /// Gets an ILineString object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ILineString object to retrieve.
-    /// 
-    /// \return
-    /// Returns the ILineString object at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ILineString *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ILineString object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ILineString object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ILineString object
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILineString *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRing.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRing.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRing.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -21,6 +21,8 @@
 
 #include "mgIRingAbstract.h"
 
+class FdoLinearRingCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 public __gc class DirectPositionCollection;
@@ -93,6 +95,268 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection *get_Positions();
 };
 
+/// \brief
+/// The LinearRingCollection class is a collection of ILinearRing objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class LinearRingCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed element should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	LinearRingCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoLinearRingCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		LinearRingCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(LinearRingCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of LinearRingCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	LinearRingCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th ILinearRing from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a ILinearRing object into the collection.
+    /// 
+    /// \param value 
+    /// Input the ILinearRing object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
+
+    /// \brief
+    /// Determines the index of a specific ILinearRing object.
+    /// 
+    /// \param value 
+    /// Input the ILinearRing object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
+
+    /// \brief
+    /// Inserts an ILinearRing object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the ILinearRing object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value); 
+
+    /// \brief
+    /// Removes the first occurrence of a specific ILinearRing object.
+    /// 
+    /// \param value 
+    /// Input the ILinearRing object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
+
+    /// \brief
+    /// Determines whether the collection contains a specific ILinearRing object.
+    /// 
+    /// \param value 
+    /// Input The ILinearRing object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
+
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ILinearRing object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ILinearRing object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ILinearRing *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ILinearRing object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ILinearRing object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ILinearRing
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing *value);
+
+    /// \brief
+    /// Gets an ILinearRing object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ILinearRing object to retrieve.
+    /// 
+    /// \return
+    /// Returns the ILinearRing object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::ILinearRing *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ILinearRing object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ILinearRing object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ILinearRing object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRingImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRingImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgILinearRingImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -22,7 +22,7 @@
 #include "mgILinearRing.h"
 
 class FdoILinearRing;
-class FdoLinearRingCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 public __gc class DirectPositionCollection;
@@ -112,240 +112,6 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection *get_Positions();
 };
 
-/// \brief
-/// The LinearRingCollection class is a collection of ILinearRing objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class LinearRingCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed element should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	LinearRingCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoLinearRingCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// A Nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		LinearRingCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(LinearRingCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of LinearRingCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	LinearRingCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    /// Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    /// Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th ILinearRing from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a ILinearRing object into the collection.
-    /// 
-    /// \param value 
-    /// Input the ILinearRing object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
-
-    /// \brief
-    /// Determines the index of a specific ILinearRing object.
-    /// 
-    /// \param value 
-    /// Input the ILinearRing object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
-
-    /// \brief
-    /// Inserts an ILinearRing object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the ILinearRing object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value); 
-
-    /// \brief
-    /// Removes the first occurrence of a specific ILinearRing object.
-    /// 
-    /// \param value 
-    /// Input the ILinearRing object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
-
-    /// \brief
-    /// Determines whether the collection contains a specific ILinearRing object.
-    /// 
-    /// \param value 
-    /// Input The ILinearRing object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* value);
-
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ILinearRing* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets an ILinearRing object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ILinearRing object to retrieve.
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ILinearRing *get_RealTypeItem(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ILinearRing object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ILinearRing object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ILinearRing
-    /// 
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing *value);
-
-    /// \brief
-    /// Gets an ILinearRing object in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the ILinearRing object to retrieve.
-    /// 
-    /// \return
-    /// Returns the ILinearRing object at the specified index
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::ILinearRing *get_Item(System::Int32 index);
-
-    /// \brief
-    /// Sets the value of the ILinearRing object at the specified index
-    /// 
-    /// \param index 
-    /// Input index of the ILinearRing object to set.
-    /// 
-    /// \param value 
-    /// Input the value of the ILinearRing object
-    /// 
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ILinearRing *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPoint.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPoint.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPoint.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -20,6 +20,8 @@
 
 #include "mgIGeometry.h"
 
+class FdoPointCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -67,6 +69,262 @@
 		System::Int32 &dimensionality) = 0;
 };
 
+/// \brief
+/// The PointCollection class is a collection of Point objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class PointCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed element should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	PointCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoPointCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		PointCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(PointCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of PointCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	PointCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th IPoint from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a IPoint object into the collection.
+    /// 
+    /// \param value 
+    /// Input the IPoint object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
+    /// \brief
+    /// Determines the index of a specific IPoint object.
+    /// 
+    /// \param value 
+    /// Input the IPoint object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
+    /// \brief
+    /// Inserts an IPoint object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the IPoint object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint* value); 
+    /// \brief
+    /// Removes the first occurrence of a specific IPoint object.
+    /// 
+    /// \param value 
+    /// Input the IPoint object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
+    /// \brief
+    /// Determines whether the collection contains a specific IPoint object.
+    /// 
+    /// \param value 
+    /// Input The IPoint object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IPoint* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an IPoint object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IPoint *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IPoint object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IPoint
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint *value);
+
+    /// \brief
+    /// Gets an IPoint object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to retrieve.
+    /// 
+    /// \return
+    /// Returns the IPoint object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IPoint *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IPoint object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IPoint object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPointImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPointImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPointImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -17,11 +17,12 @@
 */
 
 #pragma once
+
 #include "mgIGeometryImp.h"
 #include "mgIPoint.h"
 
 class FdoIPoint;
-class FdoPointCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface IDirectPosition;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -86,205 +87,6 @@
 		System::Int32 &dimensionality);
 };
 
-/// \brief
-/// The PointCollection class is a collection of Point objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class PointCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed element should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	PointCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoPointCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		PointCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(PointCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of PointCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	PointCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    ///   Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    ///   Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th IPoint from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a IPoint object into the collection.
-    /// 
-    /// \param value 
-    /// Input the IPoint object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
-    /// \brief
-    /// Determines the index of a specific IPoint object.
-    /// 
-    /// \param value 
-    /// Input the IPoint object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
-    /// \brief
-    /// Inserts an IPoint object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the IPoint object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint* value); 
-    /// \brief
-    /// Removes the first occurrence of a specific IPoint object.
-    /// 
-    /// \param value 
-    /// Input the IPoint object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
-    /// \brief
-    /// Determines whether the collection contains a specific IPoint object.
-    /// 
-    /// \param value 
-    /// Input The IPoint object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IPoint* value);
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IPoint* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets or sets an IPoint in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IPoint to retrieve or set (System::Int32).
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IPoint *get_RealTypeItem(System::Int32 index);
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint *value);
-
-	__property NAMESPACE_OSGEO_GEOMETRY::IPoint *get_Item(System::Int32 index);
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPoint *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygon.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygon.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygon.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -20,6 +20,8 @@
 
 #include "mgISurfaceAbstract.h"
 
+class FdoPolygonCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ILinearRing;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -63,6 +65,262 @@
 	
 };
 
+/// \brief
+/// The PolygonCollection class is a collection of IPolygon objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class PolygonCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed element should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	PolygonCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoPolygonCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		PolygonCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(PolygonCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of PolygonCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	PolygonCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th IPolygon from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a IPolygon object into the collection.
+    /// 
+    /// \param value 
+    /// Input the IPolygon object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
+    /// \brief
+    /// Determines the index of a specific IPolygon object.
+    /// 
+    /// \param value 
+    /// Input the IPolygon object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
+    /// \brief
+    /// Inserts an IPolygon object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the IPolygon object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon* value); 
+    /// \brief
+    /// Removes the first occurrence of a specific IPolygon object.
+    /// 
+    /// \param value 
+    /// Input the IPolygon object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
+    /// \brief
+    /// Determines whether the collection contains a specific IPolygon object.
+    /// 
+    /// \param value 
+    /// Input The IPolygon object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IPolygon* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an IPolygon object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IPolygon object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IPolygon *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IPolygon object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IPolygon object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IPolygon
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon *value);
+
+    /// \brief
+    /// Gets an IPolygon object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IPolygon object to retrieve.
+    /// 
+    /// \return
+    /// Returns the IPolygon object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IPolygon *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IPolygon object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IPolygon object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IPolygon object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygonImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygonImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIPolygonImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -21,7 +21,7 @@
 #include "mgIPolygon.h"
 
 class FdoIPolygon;
-class FdoPolygonCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ILinearRing;
 END_NAMESPACE_OSGEO_GEOMETRY
@@ -82,205 +82,6 @@
 	
 };
 
-/// \brief
-/// The PolygonCollection class is a collection of Polygon objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class PolygonCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed element should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	PolygonCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoPolygonCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		PolygonCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(PolygonCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of PolygonCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	PolygonCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    ///   Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    ///   Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th IPolygon from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a IPolygon object into the collection.
-    /// 
-    /// \param value 
-    /// Input the IPolygon object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
-    /// \brief
-    /// Determines the index of a specific IPolygon object.
-    /// 
-    /// \param value 
-    /// Input the IPolygon object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
-    /// \brief
-    /// Inserts an IPolygon object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the IPolygon object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon* value); 
-    /// \brief
-    /// Removes the first occurrence of a specific IPolygon object.
-    /// 
-    /// \param value 
-    /// Input the IPolygon object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
-    /// \brief
-    /// Determines whether the collection contains a specific IPolygon object.
-    /// 
-    /// \param value 
-    /// Input The IPolygon object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IPolygon* value);
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IPolygon* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets or sets an IPolygon in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IPolygon to retrieve or set (System::Int32).
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IPolygon *get_RealTypeItem(System::Int32 index);
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon *value);
-
-	__property NAMESPACE_OSGEO_GEOMETRY::IPolygon *get_Item(System::Int32 index);
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IPolygon *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRing.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRing.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRing.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -19,9 +19,10 @@
 
 #pragma once
 
-
 #include "mgIRingAbstract.h"
 
+class FdoRingCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ICurveSegmentAbstract;
 public __gc class CurveSegmentCollection;
@@ -63,6 +64,262 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection *get_CurveSegments();
 };
 
+/// \brief
+/// The RingCollection class is a collection of IRing objects.
+[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
+public __gc __sealed class RingCollection 
+	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
+{
+public:
+    /// \brief
+    /// Constructs a managed object based on an unmanaged instance of the object
+    /// 
+    /// \param unmanaged 
+    /// Input A Pointer to the unmanaged object.
+    /// 
+    /// \param autoDelete 
+    /// Input Indicates if the constructed element should be automatically deleted 
+    /// once it no longer referenced.
+    /// 
+	RingCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
+
+public private:
+	FdoRingCollection *GetImpObj();
+
+/// \cond DOXYGEN-IGNORE
+protected:
+	__sealed System::Void ReleaseUnmanagedObject();
+
+private:
+    /// \brief
+    /// A Nested class defined to provide enumeration of Dictionary elements
+    ///
+    /// Enumerators can be used to read the data in the collection, 
+    /// but they cannot be used to modify the underlying collection.
+    ///
+    /// An enumerator remains valid as long as the collection remains unchanged. 
+    /// If changes are made to the collection, such as adding, modifying, or deleting 
+    /// elements, the enumerator is irrecoverably invalidated and the next call to 
+    /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
+    /// modified between MoveNext and Current, Current returns the element that it is 
+    /// set to, even if the enumerator is already invalidated.
+    ///
+    /// The enumerator does not have exclusive access to the collection; therefore, 
+    /// enumerating through a collection is intrinsically not a thread-safe procedure. 
+    /// Even when a collection is synchronized, other threads can still modify the 
+    /// collection, which causes the enumerator to throw an exception. To guarantee 
+    /// thread safety during enumeration, you can either lock the collection during 
+    /// the entire enumeration or catch the exceptions resulting from changes made 
+    /// by other threads.
+    /// 
+	__gc class Enumerator : public System::Collections::IEnumerator
+	{
+		RingCollection *m_pCol;
+		System::Int32 m_nIdx;
+
+    public:
+        /// \brief
+        /// Constructs a new Collection Enumerator
+        /// 
+        /// \param col 
+        /// Input The collection to enumerate.
+        /// 
+		Enumerator(RingCollection *col)
+			: m_pCol(col), m_nIdx(-1)
+		{}
+
+        /// \brief
+        /// Retrieves the current object at the enumerator location
+        /// 
+        /// \return
+        /// Retuns the current object referenced by the enumerator
+        /// 
+		__property System::Object *get_Current();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// At this position, calling the Current property throws an exception. 
+        /// Therefore, you must call the MoveNext method to advance the enumerator 
+        /// to the first element of the collection before reading the value of Current.
+        /// If MoveNext passes the end of the collection, the enumerator is positioned 
+        /// after the last element in the collection and MoveNext returns false. 
+        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
+        /// If the last call to MoveNext returned false, calling Current throws an exception. 
+        /// To set Current to the first element of the collection again, you can call Reset 
+        /// followed by MoveNext.
+        /// 
+        /// \return
+        /// Retuns true if the Enumerator is able to move to a valid element
+        /// otherwise false.
+        /// 
+        System::Boolean MoveNext();
+
+        /// \brief
+        /// Initially, the enumerator is positioned before the first element in the collection. 
+        /// The Reset method brings the enumerator back to this position. 
+        /// 
+        System::Void Reset();
+	};
+/// \endcond
+
+public:
+    /// \brief
+    /// Creates an instance of RingCollection with no contained elements.
+    /// 
+    /// \return
+    /// Returns an empty collection
+    /// 
+	RingCollection();
+
+private:
+    // System::Collections::ICollection interface properties
+    __property System::Object* System::Collections::ICollection::get_SyncRoot();
+    __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
+
+    // System::Collections::ICollection interface methods
+    System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
+
+    // System::Collections::IList interface properties
+    __property System::Boolean System::Collections::IList::get_IsFixedSize();
+    __property System::Boolean System::Collections::IList::get_IsReadOnly();
+    __property Object* System::Collections::IList::get_Item(System::Int32 index);
+    __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
+
+    // System::Collections::IList interface methods
+    System::Int32 System::Collections::IList::Add(Object* value);
+    System::Boolean System::Collections::IList::Contains(Object* value);
+    System::Int32 System::Collections::IList::IndexOf(Object* value);
+    System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
+    System::Void System::Collections::IList::Remove(Object* value);
+
+public:
+    /// \brief
+    /// Gets the count of items in collection.
+    /// 
+    /// \return
+    /// Returns the number of items in the collection.
+    /// 
+	__property System::Int32 get_Count(System::Void);
+
+    /// \brief
+    /// Gets an enumerator that can iterate through a collection.
+    /// 
+    /// \return
+    /// Returns an enumerator on the dictionary.
+    /// 
+	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
+
+    /// \brief
+    /// Removes the index-th IRing from this collection.
+    /// 
+    /// \param index 
+    /// Input index of the element to remove.
+    /// 
+	System::Void RemoveAt(System::Int32 index);
+    /// \brief
+    /// Removes all elements from the collection.
+    /// 
+	System::Void  Clear();
+
+public:
+    /// \brief
+    /// Adds a IRing object into the collection.
+    /// 
+    /// \param value 
+    /// Input the IRing object to add.
+    /// 
+    /// \return
+    /// The position into which the new element was inserted.
+    /// 
+	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
+    /// \brief
+    /// Determines the index of a specific IRing object.
+    /// 
+    /// \param value 
+    /// Input the IRing object to locate in the collection.
+    /// 
+    /// \return
+    /// The index of value if found in the collection; otherwise, -1.
+    /// 
+    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
+    /// \brief
+    /// Inserts an IRing object to the collection at the specified position.
+    /// 
+    /// \param index 
+    /// Input the zero-based index at which value should be inserted.
+    /// \param value 
+    /// Input the IRing object to insert.
+    /// 
+    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing* value); 
+    /// \brief
+    /// Removes the first occurrence of a specific IRing object.
+    /// 
+    /// \param value 
+    /// Input the IRing object to remove from the collection.
+    /// 
+    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
+    /// \brief
+    /// Determines whether the collection contains a specific IRing object.
+    /// 
+    /// \param value 
+    /// Input The IRing object to locate in the collection.
+    /// 
+    /// \return
+    /// True if the value is found in the collection; otherwise, false.
+    /// 
+    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
+    /// \brief
+    /// Copies the elements of the collection to an array.
+    /// 
+    /// \param array 
+    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
+    /// \param startAt 
+    /// Input an integer that represents the index in array at which copying begins.
+    /// 
+    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IRing* array[],System::Int32 startAt);
+
+    /// \brief
+    /// Gets an ILineString object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to retrieve.
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_RealTypeItem(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the ILineString object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the ILineString object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the ILineString
+    /// 
+    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing *value);
+
+    /// \brief
+    /// Gets an IPoint object in the collection.
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to retrieve.
+    /// 
+    /// \return
+    /// Returns the IPoint object at the specified index
+    /// 
+	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_Item(System::Int32 index);
+
+    /// \brief
+    /// Sets the value of the IPoint object at the specified index
+    /// 
+    /// \param index 
+    /// Input index of the IPoint object to set.
+    /// 
+    /// \param value 
+    /// Input the value of the IPoint object
+    /// 
+    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing *value);
+};
+
 END_NAMESPACE_OSGEO_GEOMETRY
 
 

Modified: branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRingImp.h
===================================================================
--- branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRingImp.h	2007-02-02 00:07:02 UTC (rev 701)
+++ branches/3.2.x/Fdo/Managed/Src/OSGeo/Geometry/mgIRingImp.h	2007-02-02 00:09:07 UTC (rev 702)
@@ -18,11 +18,12 @@
 
 
 #pragma once
+
 #include "mgIRingAbstractImp.h"
 #include "mgIRing.h"
 
 class FdoIRing;
-class FdoRingCollection;
+
 BEGIN_NAMESPACE_OSGEO_GEOMETRY
 public __gc __interface ICurveSegmentAbstract;
 public __gc class CurveSegmentCollection;
@@ -81,205 +82,6 @@
 	__property NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection *get_CurveSegments();
 };
 
-/// \brief
-/// The RingCollection class is a collection of Ring objects.
-[System::Reflection::DefaultMemberAttribute("RealTypeItem")]
-public __gc __sealed class RingCollection 
-	: public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
-{
-public:
-    /// \brief
-    /// Constructs a managed object based on an unmanaged instance of the object
-    /// 
-    /// \param unmanaged 
-    /// Input A Pointer to the unmanaged object.
-    /// 
-    /// \param autoDelete 
-    /// Input Indicates if the constructed element should be automatically deleted 
-    /// once it no longer referenced.
-    /// 
-	RingCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
-
-public private:
-	FdoRingCollection *GetImpObj();
-
-/// \cond DOXYGEN-IGNORE
-protected:
-	__sealed System::Void ReleaseUnmanagedObject();
-
-private:
-
-    /// \brief
-    /// nested class defined to provide Enumerator.
-    /// 
-	__gc class Enumerator : public System::Collections::IEnumerator
-	{
-		RingCollection *m_pCol;
-		System::Int32 m_nIdx;
-
-    public:
-        /// \brief
-        /// Constructs a new Collection Enumerator
-        /// 
-        /// \param col 
-        /// Input The collection to enumerate.
-        /// 
-		Enumerator(RingCollection *col)
-			: m_pCol(col), m_nIdx(-1)
-		{}
-
-        /// \brief
-        /// Retrieves the current object at the enumerator location
-        /// 
-        /// \return
-        /// Retuns the current object referenced by the enumerator
-        /// 
-		__property System::Object *get_Current();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// At this position, calling the Current property throws an exception. 
-        /// Therefore, you must call the MoveNext method to advance the enumerator 
-        /// to the first element of the collection before reading the value of Current.
-        /// If MoveNext passes the end of the collection, the enumerator is positioned 
-        /// after the last element in the collection and MoveNext returns false. 
-        /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
-        /// If the last call to MoveNext returned false, calling Current throws an exception. 
-        /// To set Current to the first element of the collection again, you can call Reset 
-        /// followed by MoveNext.
-        /// 
-        /// \return
-        /// Retuns true if the Enumerator is able to move to a valid element
-        /// otherwise false.
-        /// 
-        System::Boolean MoveNext();
-
-        /// \brief
-        /// Initially, the enumerator is positioned before the first element in the collection. 
-        /// The Reset method brings the enumerator back to this position. 
-        /// 
-        System::Void Reset();
-	};
-/// \endcond
-
-public:
-    /// \brief
-    /// Creates an instance of RingCollection with no contained elements.
-    /// 
-    /// \return
-    /// Returns an empty collection
-    /// 
-	RingCollection();
-
-private:
-    // System::Collections::ICollection
-	System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
-	__property System::Object* System::Collections::ICollection::get_SyncRoot(System::Void);
-	__property System::Boolean System::Collections::ICollection::get_IsSynchronized(System::Void);
-    // System::Collections::IList
-	__property System::Boolean System::Collections::IList::get_IsFixedSize(System::Void);
-	__property System::Boolean System::Collections::IList::get_IsReadOnly(System::Void);
-	System::Int32 System::Collections::IList::Add(Object* value);
-	System::Boolean System::Collections::IList::Contains(Object* value);
-	System::Int32 System::Collections::IList::IndexOf(Object* value);
-	System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
-	System::Void System::Collections::IList::Remove(Object* value);
-	__property Object* System::Collections::IList::get_Item(System::Int32 index);
-	__property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
-
-public:
-    /// \brief
-    ///   Gets the count of items in collection.
-    /// 
-	__property System::Int32 get_Count(System::Void);
-
-    /// \brief
-    ///   Gets an enumerator that can iterate through a collection.
-    /// 
-	__sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
-
-    /// \brief
-    /// Removes the index-th IRing from this collection.
-    /// 
-    /// \param index 
-    /// Input index of the element to remove.
-    /// 
-	System::Void RemoveAt(System::Int32 index);
-    /// \brief
-    /// Removes all elements from the collection.
-    /// 
-	System::Void  Clear();
-
-public:
-    /// \brief
-    /// Adds a IRing object into the collection.
-    /// 
-    /// \param value 
-    /// Input the IRing object to add.
-    /// 
-    /// \return
-    /// The position into which the new element was inserted.
-    /// 
-	System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
-    /// \brief
-    /// Determines the index of a specific IRing object.
-    /// 
-    /// \param value 
-    /// Input the IRing object to locate in the collection.
-    /// 
-    /// \return
-    /// The index of value if found in the collection; otherwise, -1.
-    /// 
-    System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
-    /// \brief
-    /// Inserts an IRing object to the collection at the specified position.
-    /// 
-    /// \param index 
-    /// Input the zero-based index at which value should be inserted.
-    /// \param value 
-    /// Input the IRing object to insert.
-    /// 
-    System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing* value); 
-    /// \brief
-    /// Removes the first occurrence of a specific IRing object.
-    /// 
-    /// \param value 
-    /// Input the IRing object to remove from the collection.
-    /// 
-    System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
-    /// \brief
-    /// Determines whether the collection contains a specific IRing object.
-    /// 
-    /// \param value 
-    /// Input The IRing object to locate in the collection.
-    /// 
-    /// \return
-    /// True if the value is found in the collection; otherwise, false.
-    /// 
-    System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::IRing* value);
-    /// \brief
-    /// Copies the elements of the collection to an array.
-    /// 
-    /// \param array 
-    /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
-    /// \param startAt 
-    /// Input an integer that represents the index in array at which copying begins.
-    /// 
-    System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::IRing* array[],System::Int32 startAt);
-
-    /// \brief
-    /// Gets or sets an IRing in the collection.
-    /// 
-    /// \param index 
-    /// Input index of the IRing to retrieve or set (System::Int32).
-    /// 
-	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_RealTypeItem(System::Int32 index);
-    __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing *value);
-
-	__property NAMESPACE_OSGEO_GEOMETRY::IRing *get_Item(System::Int32 index);
-    __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::IRing *value);
-};
-
 END_NAMESPACE_OSGEO_GEOMETRY
 
 



More information about the fdo-commits mailing list