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

# FeaturePropertyWriter.h

Go to the documentation of this file.

    00001 #ifndef FDO_XML_FEATUREPROPERTYWRITER_H_
    00002 #define FDO_XML_FEATUREPROPERTYWRITER_H_
    00003
    00004 //
    00005 // Copyright (C) 2004-2006  Autodesk, Inc.
    00006 //
    00007 // This library is free software; you can redistribute it and/or
    00008 // modify it under the terms of version 2.1 of the GNU Lesser
    00009 // General Public License as published by the Free Software Foundation.
    00010 //
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014 // Lesser General Public License for more details.
    00015 //
    00016 // You should have received a copy of the GNU Lesser General Public
    00017 // License along with this library; if not, write to the Free Software
    00018 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00019 //
    00020
    00021 #ifdef _WIN32
    00022 #pragma once
    00023 #endif
    00024
    00025 #include <FdoStd.h>
    00026
    00027 /// \brief
    00028 /// FdoXmlFeaturePropertyWriter writes features in GML format. It is similar to
    00029 /// FdoXmlFeatureWriter, except that it provides better performance. However, the
    00030 /// caller is responsible for ensuring that properties are written in proper order.
    00031 class FdoXmlFeaturePropertyWriter : public FdoIDisposable
    00032 {
    00033 public:
    00034     /// \brief
    00035     /// Creates a Feature Property Writer for writing FDO features to XML.
    00036     ///
    00037     /// \param writer
    00038     /// Input XML document writer. Specifies the XML document that the features will be
    00039     /// written to.
    00040     /// \param flags
    00041     /// Input options for controlling the writing of the features. If NULL then the
    00042     /// default flags are used.
    00043     ///
    00044     /// \return
    00045     /// Returns FdoXmlFeaturePropertyWriter
    00046     ///
    00047     FDO_API static FdoXmlFeaturePropertyWriter * Create(
    00048         FdoXmlWriter*               writer,
    00049         FdoXmlFlags*                flags = NULL
    00050     );
    00051
    00052     /// \brief
    00053     /// Gets the underlying XML writer.
    00054     ///
    00055     /// \return
    00056     /// Returns the underlying XML writer.
    00057     ///
    00058     FDO_API FdoXmlWriter* GetXmlWriter();
    00059
    00060     /// \brief
    00061     /// Gets the class definition for the current feature being written.
    00062     ///
    00063     /// \return
    00064     /// Returns FdoClassDefinition
    00065     ///
    00066     FDO_API FdoClassDefinition* GetClassDefinition();
    00067
    00068     /// \brief
    00069     /// Sets the class definition for the current feature being written.
    00070     ///
    00071     /// \param classDefinition
    00072     /// Input the class definition
    00073     ///
    00074     /// \return
    00075     /// Returns nothing
    00076     ///
    00077     FDO_API void SetClassDefinition(FdoClassDefinition* classDefinition);
    00078
    00079     /// \brief
    00080     /// Writes the start of a feature to XML. The start tags for the feature member
    00081     /// element and the feature's actual element are written. The feature element name
    00082     /// is derived from the feature's class and schema names.
    00083     ///
    00084     /// \param startTag
    00085     /// The start tag for the feature element. If it is null, the
    00086     /// feature's class name used.
    00087     ///
    00088     /// \return
    00089     /// Returns nothing
    00090     ///
    00091     FDO_API void WriteFeatureStart(FdoString* startTag);
    00092
    00093     /// \brief
    00094     /// Closes the current feature by writing the feature element and feature member
    00095     /// element end tags.
    00096     ///
    00097     /// \return
    00098     /// Returns nothing
    00099     ///
    00100     FDO_API void WriteFeatureEnd();
    00101
    00102     /// \brief
    00103     /// Writes a feature property to XML.
    00104     ///
    00105     /// \param name
    00106     /// Input the property name
    00107     /// \param value
    00108     /// Input the property value as an FDO property
    00109     /// \param valueOnly
    00110     /// false: wrap the property value in a property element
    00111     /// true: just write the property value
    00112     ///
    00113     /// \return
    00114     /// Returns nothing
    00115     ///
    00116     FDO_API void WriteProperty( FdoString* name, FdoPropertyValue* value, FdoBoolean valueOnly = false );
    00117
    00118     /// \brief
    00119     /// Writes a feature property to XML.
    00120     ///
    00121     /// \param name
    00122     /// Input the property name
    00123     /// \param value
    00124     /// Input the property value as a string
    00125     /// \param valueOnly
    00126     /// false: wrap the property value in a property element
    00127     /// true: just write the property value
    00128     ///
    00129 /// \return
    00130 /// Returns nothing
    00131     FDO_API void WriteProperty(FdoString* name, FdoString* value, FdoBoolean valueOnly = false );
    00132
    00133 //TBD: do we need functions for other basic types or make the caller do the
    00134 //conversion to string.
    00135
    00136     /// \brief
    00137     /// Writes a raster property to XML.
    00138     ///
    00139     /// \param name
    00140     /// Input the property name
    00141     /// \param value
    00142     /// Input the raster property value
    00143     /// \param valueOnly
    00144     /// false: wrap the property value in a property element
    00145     /// true: just write the property value
    00146     ///
    00147     /// \return
    00148     /// Returns nothing
    00149     ///
    00150     FDO_API void WriteProperty(FdoString* name, FdoIRaster* value, FdoBoolean valueOnly = false );
    00151
    00152     /// \brief
    00153     /// Writes a lob property to XML.
    00154     ///
    00155     /// \param name
    00156     /// Input the property name
    00157     /// \param value
    00158     /// Input the lob property value
    00159     /// \param valueOnly
    00160     /// false: wrap the property value in a property element
    00161     /// true: just write the property value
    00162     ///
    00163     /// \return
    00164     /// Returns nothing
    00165     ///
    00166     FDO_API void WriteProperty(FdoString* name, FdoLOBValue* value, FdoBoolean valueOnly = false );
    00167
    00168     /// \brief
    00169     /// Writes a LOB feature property from a stream reader to XML.
    00170     ///
    00171     /// \param name
    00172     /// Input the property name
    00173     /// \param lobReader
    00174     /// Input the reader for retrieving the lob
    00175     /// \param valueOnly
    00176     /// false: wrap the property value in a property element
    00177     /// true: just write the property value
    00178     ///
    00179     /// \return
    00180     /// Returns nothing
    00181     ///
    00182     FDO_API void WriteProperty(FdoString* name, FdoIStreamReader* lobReader, FdoBoolean valueOnly = false );
    00183
    00184     /// \brief
    00185     /// Writes a geometric property to XML.
    00186     ///
    00187     /// \param name
    00188     /// Input the property name
    00189     /// \param value
    00190     /// Input the property value as an array of bytes
    00191     /// \param count
    00192     /// Input the number of bytes in the byte array
    00193     /// \param valueOnly
    00194     /// false: wrap the property value in a property element
    00195     /// true: just write the property value
    00196     ///
    00197     /// \return
    00198     /// Returns nothing
    00199     ///
    00200     FDO_API void WriteGeometricProperty(
    00201         FdoString* name,
    00202         FdoByte* value,
    00203         FdoInt32 count,
    00204         FdoBoolean valueOnly = false
    00205     );
    00206
    00207     /// \brief
    00208     /// Writes start tag for an object property. The object property sub-properties
    00209     /// can be written by subsequent calls to this class's Write functions.
    00210     ///
    00211     /// \param name
    00212     /// Input the object property name
    00213     ///
    00214     /// \return
    00215     /// Returns nothing
    00216     ///
    00217     FDO_API void WriteObjectPropertyStart(FdoString* name);
    00218
    00219     /// \brief
    00220     /// Closes the current object property by writing its end tag.
    00221     ///
    00222     /// \return
    00223     /// Returns nothing
    00224     ///
    00225     FDO_API void WriteObjectPropertyEnd();
    00226
    00227
    00228 protected:
    00229     FdoXmlFeaturePropertyWriter();
    00230     FdoXmlFeaturePropertyWriter(FdoXmlWriter* writer, FdoXmlFlags* flags);
    00231     virtual ~FdoXmlFeaturePropertyWriter();
    00232     virtual void Dispose();
    00233
    00234 private:
    00235     FdoPtr<FdoXmlWriter> m_writer;
    00236     FdoPtr<FdoXmlFlags> m_flags;
    00237     FdoPtr<FdoClassDefinition> m_classDef;
    00238
    00239
    00240 };
    00241
    00242 /// \ingroup (typedefs)
    00243 /// \brief
    00244 /// FdoXmlFeaturePropertyReaderP is a FdoPtr on FdoXmlFeaturePropertyReader, provided for convenience.
    00245 typedef FdoPtr<FdoXmlFeaturePropertyWriter> FdoXmlFeaturePropertyWriterP;
    00246
    00247
    00248 #endif
    00249
    00250

Please send us your comment about this page