FDO .NET API Reference Feature Data Objects

mgICurveSegmentAbstract.h

Go to the documentation of this file.
00001 /*
00002 * Copyright (C) 2004-2006  Autodesk, Inc.
00003 * 
00004 * This library is free software; you can redistribute it and/or
00005 * modify it under the terms of version 2.1 of the GNU Lesser
00006 * General Public License as published by the Free Software Foundation.
00007 * 
00008 * This library is distributed in the hope that it will be useful,
00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 * Lesser General Public License for more details.
00012 * 
00013 * You should have received a copy of the GNU Lesser General Public
00014 * License along with this library; if not, write to the Free Software
00015 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00016 *
00017 */
00018 
00019 
00020 #pragma once
00021 
00022 class FdoCurveSegmentCollection;
00023 
00024 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00025 
00026 public __gc __interface IEnvelope;
00027 public __gc __interface IDirectPosition;
00028 
00029 /// \ingroup (OSGeoFDOGeometry)
00030 /// \interface OSGeo::FDO::Geometry::ICurveSegmentAbstract
00031 /// \brief
00032 /// The ICurveSegmentAbstract class is an abstract geometric Curve Segment object.  
00033 /// This class is used strictly as a component of curves 
00034 /// and, thus, does not inherit from IGeometry.
00035 public __gc __interface ICurveSegmentAbstract : public System::IDisposable
00036 {
00037 public:
00038     /// \brief
00039     /// Gets the envelope for the curve segment.
00040     /// 
00041     /// \return
00042     /// Returns the envelope
00043     /// 
00044     __property NAMESPACE_OSGEO_GEOMETRY::IEnvelope *get_Envelope();
00045     
00046     /// \brief
00047     /// Gets the starting position of this curve segment.
00048     /// 
00049     /// \return
00050     /// Returns the starting position
00051     /// 
00052     __property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_StartPosition();
00053 
00054     /// \brief
00055     /// Gets the ending position of this curve segment.
00056     /// 
00057     /// \return
00058     /// Returns the ending position
00059     /// 
00060     __property NAMESPACE_OSGEO_GEOMETRY::IDirectPosition *get_EndPosition();
00061     
00062     /// \brief
00063     /// Gets the closure state for the curve segment.
00064     /// 
00065     /// \remarks
00066     /// The meaning behind this method is not guaranteed
00067     /// to be uniform between derived types or between implementations
00068     /// of this package.
00069     /// It may represent a computed value, an explicit attribute, or be true by definition.
00070     /// As a computed value, the result is typically from simply testing the starting and 
00071     /// ending positions for exact equality.  This is only reliable in floating
00072     /// point arithmetic if these data have identical origins.
00073     /// As an explicit attribute, it would be persisted with the Geometry and 
00074     /// typically denoted by a parameter in the relevant factory method.  
00075     /// Some Geometry types are closed by definition.
00076     /// 
00077     /// \return
00078     /// Returns 'true' if the curve is closed, and false otherwise
00079     /// 
00080     __property System::Boolean get_IsClosed();
00081     
00082     /// \brief
00083     /// Gets the type of the most-derived interface 
00084     /// in the Geometry package for this object
00085     /// 
00086     /// \return
00087     /// Returns the derived type
00088     /// 
00089     __property NAMESPACE_OSGEO_COMMON::GeometryComponentType get_DerivedType();
00090 
00091     /// \brief
00092     /// Gets the dimensionality of ordinates in this object.
00093     /// 
00094     /// \remarks
00095     /// Values are from the Dimensionality enumeration.
00096     /// A return type of "Int32" is used instead of the enumeration, catering to typical use with bit masking.
00097     /// 
00098     /// \return
00099     /// Returns the ordinate dimensionality
00100     /// 
00101     __property System::Int32 get_Dimensionality();
00102 
00103 };
00104 
00105 /// \brief
00106 /// The CurveSegmentCollection class represents a collection of CurveSegment objects.
00107 [System::Reflection::DefaultMemberAttribute("RealTypeItem")]
00108 public __gc __sealed class CurveSegmentCollection 
00109     : public NAMESPACE_OSGEO_RUNTIME::Disposable, public System::Collections::IList
00110 {
00111 public:
00112     /// \brief
00113     /// Constructs a CurveSegmentCollection managed object based on an unmanaged instance of the object
00114     /// 
00115     /// \param unmanaged 
00116     /// Input A Pointer to the unmanaged object.
00117     /// 
00118     /// \param autoDelete 
00119     /// Input Indicates if the constructed object should be automatically deleted 
00120     /// once it no longer referenced.
00121     /// 
00122     CurveSegmentCollection(System::IntPtr unmanaged, System::Boolean autoDelete);
00123 
00124 public private:
00125     FdoCurveSegmentCollection *GetImpObj();
00126 
00127 /// \cond DOXYGEN-IGNORE
00128 protected:
00129     __sealed System::Void ReleaseUnmanagedObject();
00130 
00131 private:
00132     /// \brief
00133     /// A Nested class defined to provide enumeration of Dictionary elements
00134     ///
00135     /// Enumerators can be used to read the data in the collection, 
00136     /// but they cannot be used to modify the underlying collection.
00137     ///
00138     /// An enumerator remains valid as long as the collection remains unchanged. 
00139     /// If changes are made to the collection, such as adding, modifying, or deleting 
00140     /// elements, the enumerator is irrecoverably invalidated and the next call to 
00141     /// MoveNext or Reset throws an InvalidOperationException. If the collection is 
00142     /// modified between MoveNext and Current, Current returns the element that it is 
00143     /// set to, even if the enumerator is already invalidated.
00144     ///
00145     /// The enumerator does not have exclusive access to the collection; therefore, 
00146     /// enumerating through a collection is intrinsically not a thread-safe procedure. 
00147     /// Even when a collection is synchronized, other threads can still modify the 
00148     /// collection, which causes the enumerator to throw an exception. To guarantee 
00149     /// thread safety during enumeration, you can either lock the collection during 
00150     /// the entire enumeration or catch the exceptions resulting from changes made 
00151     /// by other threads.
00152     /// 
00153     __gc class Enumerator : public System::Collections::IEnumerator
00154     {
00155         CurveSegmentCollection *m_pCol;
00156         System::Int32 m_nIdx;
00157 
00158     public:
00159         /// \brief
00160         /// Constructs a new Collection Enumerator
00161         /// 
00162         /// \param col 
00163         /// Input The collection to enumerate.
00164         /// 
00165         Enumerator(CurveSegmentCollection *col)
00166             : m_pCol(col), m_nIdx(-1)
00167         {}
00168 
00169         /// \brief
00170         /// Retrieves the current object at the enumerator location
00171         /// 
00172         /// \return
00173         /// Retuns the current object referenced by the enumerator
00174         /// 
00175         __property System::Object *get_Current();
00176 
00177         /// \brief
00178         /// Initially, the enumerator is positioned before the first element in the collection. 
00179         /// At this position, calling the Current property throws an exception. 
00180         /// Therefore, you must call the MoveNext method to advance the enumerator 
00181         /// to the first element of the collection before reading the value of Current.
00182         /// If MoveNext passes the end of the collection, the enumerator is positioned 
00183         /// after the last element in the collection and MoveNext returns false. 
00184         /// When the enumerator is at this position, subsequent calls to MoveNext also return false. 
00185         /// If the last call to MoveNext returned false, calling Current throws an exception. 
00186         /// To set Current to the first element of the collection again, you can call Reset 
00187         /// followed by MoveNext.
00188         /// 
00189         /// \return
00190         /// Retuns true if the Enumerator is able to move to a valid element
00191         /// otherwise false.
00192         /// 
00193         System::Boolean MoveNext();
00194 
00195         /// \brief
00196         /// Initially, the enumerator is positioned before the first element in the collection. 
00197         /// The Reset method brings the enumerator back to this position. 
00198         /// 
00199         System::Void Reset();
00200     };
00201 /// \endcond
00202 
00203 public:
00204     /// \brief
00205     /// Creates an instance of CurveSegmentCollection with no contained elements.
00206     /// 
00207     /// \return
00208     /// Returns an empty collection
00209     /// 
00210     CurveSegmentCollection();
00211 
00212 private:
00213     // System::Collections::ICollection interface properties
00214     __property System::Object* System::Collections::ICollection::get_SyncRoot();
00215     __property System::Boolean System::Collections::ICollection::get_IsSynchronized();
00216 
00217     // System::Collections::ICollection interface methods
00218     System::Void System::Collections::ICollection::CopyTo(System::Array* array,System::Int32 index);
00219 
00220     // System::Collections::IList interface properties
00221     __property System::Boolean System::Collections::IList::get_IsFixedSize();
00222     __property System::Boolean System::Collections::IList::get_IsReadOnly();
00223     __property Object* System::Collections::IList::get_Item(System::Int32 index);
00224     __property System::Void  System::Collections::IList::set_Item(System::Int32 index, Object* value);
00225 
00226     // System::Collections::IList interface methods
00227     System::Int32 System::Collections::IList::Add(Object* value);
00228     System::Boolean System::Collections::IList::Contains(Object* value);
00229     System::Int32 System::Collections::IList::IndexOf(Object* value);
00230     System::Void System::Collections::IList::Insert(System::Int32 index, Object* value);
00231     System::Void System::Collections::IList::Remove(Object* value);
00232 
00233 public:
00234     /// \brief
00235     /// Gets the count of items in collection.
00236     /// 
00237     /// \return
00238     /// Returns the number of items in the collection.
00239     /// 
00240     __property System::Int32 get_Count(System::Void);
00241 
00242     /// \brief
00243     /// Gets an enumerator that can iterate through a collection.
00244     /// 
00245     /// \return
00246     /// Returns an enumerator on the dictionary.
00247     /// 
00248     __sealed System::Collections::IEnumerator* GetEnumerator(System::Void);
00249 
00250     /// \brief
00251     /// Removes the index-th ICurveSegmentAbstract from this collection.
00252     /// 
00253     /// \param index 
00254     /// Input index of the element to remove.
00255     /// 
00256     System::Void RemoveAt(System::Int32 index);
00257     /// \brief
00258     /// Removes all elements from the collection.
00259     /// 
00260     System::Void  Clear();
00261 
00262 public:
00263     /// \brief
00264     /// Adds a ICurveSegmentAbstract object into the collection.
00265     /// 
00266     /// \param value 
00267     /// Input the ICurveSegmentAbstract object to add.
00268     /// 
00269     /// \return
00270     /// The position into which the new element was inserted.
00271     /// 
00272     System::Int32 Add(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
00273 
00274     /// \brief
00275     /// Determines the index of a specific ICurveSegmentAbstract object.
00276     /// 
00277     /// \param value 
00278     /// Input the ICurveSegmentAbstract object to locate in the collection.
00279     /// 
00280     /// \return
00281     /// The index of value if found in the collection; otherwise, -1.
00282     /// 
00283     System::Int32 IndexOf(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
00284 
00285     /// \brief
00286     /// Inserts an ICurveSegmentAbstract object to the collection at the specified position.
00287     /// 
00288     /// \param index 
00289     /// Input the zero-based index at which value should be inserted.
00290     /// \param value 
00291     /// Input the ICurveSegmentAbstract object to insert.
00292     /// 
00293     System::Void Insert(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value); 
00294 
00295     /// \brief
00296     /// Removes the first occurrence of a specific ICurveSegmentAbstract object.
00297     /// 
00298     /// \param value 
00299     /// Input the ICurveSegmentAbstract object to remove from the collection.
00300     /// 
00301     System::Void Remove(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
00302 
00303     /// \brief
00304     /// Determines whether the collection contains a specific ICurveSegmentAbstract object.
00305     /// 
00306     /// \param value 
00307     /// Input The ICurveSegmentAbstract object to locate in the collection.
00308     /// 
00309     /// \return
00310     /// True if the value is found in the collection; otherwise, false.
00311     /// 
00312     System::Boolean Contains(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* value);
00313 
00314     /// \brief
00315     /// Copies the elements of the collection to an array.
00316     /// 
00317     /// \param array 
00318     /// Output the one-dimensional Array that is the destination of the elements copied from this collection.
00319     /// \param startAt 
00320     /// Input an integer that represents the index in array at which copying begins.
00321     /// 
00322     System::Void CopyTo(NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract* array[],System::Int32 startAt);
00323 
00324     /// \brief
00325     /// Gets an ICurveSegmentAbstract in the collection.
00326     /// 
00327     /// \param index 
00328     /// Input index of the ICurveSegmentAbstract to retrieve
00329     /// 
00330     __property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_RealTypeItem(System::Int32 index);
00331 
00332     /// \brief
00333     /// Sets the value of the ICurveSegmentAbstract object at the specified index
00334     /// 
00335     /// \param index 
00336     /// Input index of the ICurveSegmentAbstract object to set.
00337     /// 
00338     /// \param value 
00339     /// Input the value of the ICurveSegmentAbstract object
00340     /// 
00341     __property System::Void set_RealTypeItem(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
00342 
00343     /// \brief
00344     /// Gets an ICurveSegmentAbstract object in the collection.
00345     /// 
00346     /// \param index 
00347     /// Input index of the ICurveSegmentAbstract object to retrieve.
00348     /// 
00349     /// \return
00350     /// Returns the ICurveSegmentAbstract object at the specified index.
00351     /// 
00352     __property NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *get_Item(System::Int32 index);
00353 
00354     /// \brief
00355     /// Sets the value of the ICurveSegmentAbstract object at the specified index
00356     /// 
00357     /// \param index 
00358     /// Input index of the ICurveSegmentAbstract object to set.
00359     /// 
00360     /// \param value 
00361     /// Input the value of the ICurveSegmentAbstract object.
00362     /// 
00363     __property System::Void set_Item(System::Int32 index, NAMESPACE_OSGEO_GEOMETRY::ICurveSegmentAbstract *value);
00364 };
00365 
00366 END_NAMESPACE_OSGEO_GEOMETRY
00367 
00368 

Comments or suggestions? Send us feedback.