- Main Page
- Related Pages
- Modules
- Classes
- Files

# FeaturePropertyReader.h

Go to the documentation of this file.

    00001 #ifndef FDO_XML_FEATUREPROPERTYREADER_H_
    00002 #define FDO_XML_FEATUREPROPERTYREADER_H_
    00003 //
    00004
    00005 //
    00006 // Copyright (C) 2004-2006  Autodesk, Inc.
    00007 //
    00008 // This library is free software; you can redistribute it and/or
    00009 // modify it under the terms of version 2.1 of the GNU Lesser
    00010 // General Public License as published by the Free Software Foundation.
    00011 //
    00012 // This library is distributed in the hope that it will be useful,
    00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00015 // Lesser General Public License for more details.
    00016 //
    00017 // You should have received a copy of the GNU Lesser General Public
    00018 // License along with this library; if not, write to the Free Software
    00019 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00020 //
    00021
    00022 #ifdef _WIN32
    00023 #pragma once
    00024 #endif
    00025
    00026 #include <FdoStd.h>
    00027
    00028 class FdoXmlFeatureContext;
    00029 class FdoXmlFeatureFlags;
    00030 class FdoXmlFeatureHandler;
    00031 class FdoXmlGeometryHandler;
    00032
    00033 /// \brief
    00034 /// FdoXmlFeaturePropertyReader reads features from an XML document. The reading
    00035 /// is event driven. As features and properties within features are encountered, the
    00036 /// invoker is notified through the FdoXmlFeatureHandler interface. This class is
    00037 /// similar to FdoXmlFeatureReader except that it provides better performance.
    00038 class FdoXmlFeaturePropertyReader :
    00039     public FdoXmlSaxHandler,
    00040     public FdoIDisposable
    00041 {
    00042 public:
    00043
    00044
    00045     /// \brief
    00046     /// creates a Feature Property Reader.
    00047     ///
    00048     /// \remarks
    00049     /// The XML element, at the document reader's current position, is recognized as a feature
    00050     /// collection if it is one or more of the following:
    00051     /// <ul>
    00052     ///     <li> GML FeatureCollection element
    00053     ///     <li> the element specified by flags->collectionUri and flags->collectionName
    00054     ///     <li> it has a corresponding class definition, in the given schemas, that
    00055     ///       derives from the GML AbstractFeatureCollectionType.
    00056     /// </ul>
    00057     ///
    00058     /// \param reader
    00059     /// Input XML document reader.
    00060     /// If this reader is currently positioned at a feature
    00061     /// collection type element then all features in this element are read. Otherwise,
    00062     /// it processes all Feature Collection type sub-elements of the current element
    00063     /// and reads their features. Therefore, if the reader is at the start of the XML
    00064     /// document, all top-level feature collections in the document are read.
    00065     /// \param flags
    00066     /// Input options for controlling the deserializing of the features. If NULL then
    00067     /// the default flags are used.
    00068     ///
    00069     /// \return
    00070     /// Returns FdoXmlFeaturePropertyReader
    00071     ///
    00072     FDO_API static FdoXmlFeaturePropertyReader * Create(
    00073         FdoXmlReader*               reader,
    00074         FdoXmlFeatureFlags*         flags = NULL
    00075     );
    00076
    00077     /// \brief
    00078     /// Gets the Xml document reader that was passed to this object.
    00079     ///
    00080     /// \return
    00081     /// Returns FdoXmlReader.
    00082     ///
    00083     FDO_API virtual FdoXmlReader* GetXmlReader() = 0;
    00084
    00085     /// \brief
    00086     /// Gets the feature schemas describing the features being read.
    00087     ///
    00088     /// \return
    00089     /// Returns FdoFeatureSchemaCollection
    00090     ///
    00091     FDO_API virtual FdoFeatureSchemaCollection* GetFeatureSchemas() = 0;
    00092
    00093     /// \brief
    00094     /// Sets the feature schemas describing the features being read.
    00095     ///
    00096     /// \remarks
    00097     /// The feature schemas provide directions to this class on how to deserialize the
    00098     /// features and convert their property values from the strings in the XML document
    00099     /// to their proper types. If any feature, whose class definition is not present
    00100     /// in these schemas, is encountered then one of the following is done:
    00101     /// <ul>
    00102     ///     <li> an exception is thrown when flags->errorLevel is Normal or higher. The
    00103     ///       exception reports all such features.
    00104     ///     <li> the feature is read according to a best default translation when the
    00105     ///       flags->errorLevel is below Normal.
    00106     /// </ul>
    00107     ///
    00108     /// \param schemas
    00109     /// Input the feature schemas
    00110     ///
    00111     /// \return
    00112     /// Returns nothing
    00113     ///
    00114     FDO_API virtual void SetFeatureSchemas(FdoFeatureSchemaCollection* schemas) = 0;
    00115
    00116     /// \brief
    00117     /// Parses the XML document.
    00118     ///
    00119     /// \param featureHandler
    00120     /// Input handler to receive events. Parse() fires various events as features and
    00121     /// properties are encountered.
    00122     /// \param featureContext
    00123     /// Input Caller-specific contextual information that is pass to the feature
    00124     /// handler event callbacks.
    00125     /// \param incremental
    00126     /// Input
    00127     /// true: an incremental (progressive) parse is performed. This function returns after the
    00128     /// next feature is read.
    00129     /// false: this function keeps going until all features have been read.
    00130     ///
    00131     /// \return
    00132     /// Returns false if no feature(s) were read.
    00133     ///
    00134     FDO_API virtual FdoBoolean Parse(
    00135         FdoXmlFeatureHandler* featureHandler = NULL,
    00136         FdoXmlFeatureContext* featureContext = NULL,
    00137         FdoBoolean incremental = false
    00138     ) = 0;
    00139
    00140     /// \brief
    00141     /// Indicates whether all features have been read
    00142     ///
    00143     /// \return
    00144     /// Returns true if there are no more features to read , false otherwise
    00145     ///
    00146     FDO_API virtual FdoBoolean GetEOF() = 0;
    00147
    00148 };
    00149
    00150 /// \ingroup (typedefs)
    00151 /// \brief
    00152 /// FdoXmlFeaturePropertyReaderP is a FdoPtr on FdoXmlFeaturePropertyReader, provided for convenience.
    00153 typedef FdoPtr<FdoXmlFeaturePropertyReader> FdoXmlFeaturePropertyReaderP;
    00154
    00155
    00156 #endif
    00157
    00158

Please send us your comment about this page