FDO API Reference | Feature Data Objects |
00001 #ifndef _DATAVALUE_H_ 00002 #define _DATAVALUE_H_ 00003 // 00004 00005 // 00006 // Copyright (C) 2004-2007 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 #include <Fdo/Expression/LiteralValue.h> 00028 #include <Fdo/Schema/DataType.h> 00029 00030 /// \brief 00031 /// The FdoDataValue class derives from FdoLiteralValue and represents a literal 00032 /// value such as a string or a number. 00033 class FdoDataValue : public FdoLiteralValue 00034 { 00035 /// \cond DOXYGEN-IGNORE 00036 friend class FdoInternalDataValue; 00037 friend class FdoByteValue; 00038 friend class FdoDecimalValue; 00039 friend class FdoDoubleValue; 00040 friend class FdoInt16Value; 00041 friend class FdoInt32Value; 00042 friend class FdoInt64Value; 00043 friend class FdoSingleValue; 00044 protected: 00045 /// \brief 00046 /// Constructs a default instance of an FdoDataValue with data type string and a 00047 /// value of null. 00048 /// 00049 /// \return 00050 /// Returns nothing 00051 /// 00052 FdoDataValue(); 00053 /// \endcond 00054 00055 public: 00056 /// \brief 00057 /// Constructs an instance of a null FdoDataValue using the specified arguments. 00058 /// 00059 /// \param dataType 00060 /// Input data type 00061 /// 00062 /// \return 00063 /// Returns nothing 00064 /// 00065 FDO_API static FdoDataValue* Create(FdoDataType dataType); 00066 00067 /// \brief 00068 /// Constructs an instance of an FdoBooleanValue using the specified argument. 00069 /// 00070 /// \param value 00071 /// Input a Boolean value 00072 /// 00073 /// \return 00074 /// Returns an FdoBooleanValue 00075 /// 00076 FDO_API static FdoDataValue* Create(bool value); 00077 00078 /// \brief 00079 /// Constructs an instance of an FdoByteValue using the specified argument. 00080 /// 00081 /// \param value 00082 /// Input a byte 00083 /// 00084 /// \return 00085 /// Returns an FdoByteValue 00086 /// 00087 FDO_API static FdoDataValue* Create(FdoByte value); 00088 00089 /// \brief 00090 /// Constructs an instance of an FdoDateTimeValue using the specified argument. 00091 /// 00092 /// \param value 00093 /// Input a FdoDateTime 00094 /// 00095 /// \return 00096 /// Returns an FdoDateTimeValue 00097 /// 00098 FDO_API static FdoDataValue* Create(FdoDateTime value); 00099 00100 /// \brief 00101 /// Constructs an instance of an FdoDecimalValue or FdoDoubleValue using 00102 /// the specified arguments. 00103 /// 00104 /// \param value 00105 /// Input a double 00106 /// \param dataType 00107 /// Input a data type 00108 /// 00109 /// \return 00110 /// Returns an FdoDecimalValue or FdoDoubleValue 00111 /// 00112 FDO_API static FdoDataValue* Create(double value, FdoDataType dataType); 00113 00114 /// \brief 00115 /// Constructs an instance of an FdoInt16Value using the specified argument. 00116 /// 00117 /// \param value 00118 /// Input a 16 bit integer 00119 /// 00120 /// \return 00121 /// Returns an FdoInt16Value 00122 /// 00123 FDO_API static FdoDataValue* Create(FdoInt16 value); 00124 00125 /// \brief 00126 /// Constructs an instance of an FdoInt32Value using the specified argument. 00127 /// 00128 /// \param value 00129 /// Input a 32 bit integer 00130 /// 00131 /// \return 00132 /// Returns an FdoInt32Value 00133 /// 00134 FDO_API static FdoDataValue* Create(FdoInt32 value); 00135 00136 /// \brief 00137 /// Constructs an instance of an FdoInt64Value using the specified argument. 00138 /// 00139 /// \param value 00140 /// Input a 64 bit integer 00141 /// 00142 /// \return 00143 /// Returns an FdoInt64Value 00144 /// 00145 FDO_API static FdoDataValue* Create(FdoInt64 value); 00146 00147 /// \brief 00148 /// Constructs an instance of an FdoSingleValue using the specified argument. 00149 /// 00150 /// \param value 00151 /// Input a single precision floating point value 00152 /// 00153 /// \return 00154 /// Returns an FdoSingleValue 00155 /// 00156 FDO_API static FdoDataValue* Create(float value); 00157 00158 /// \brief 00159 /// Constructs an instance of an FdoStringValue using the specified argument. 00160 /// 00161 /// \param value 00162 /// Input a character string 00163 /// 00164 /// \return 00165 /// Returns an FdoStringValue 00166 /// 00167 FDO_API static FdoDataValue* Create(FdoString* value); 00168 00169 /// \brief 00170 /// Constructs an instance of an FdoBLOBValue or FdoCLOBValue using the specified arguments. 00171 /// 00172 /// \param value 00173 /// Input a byte array 00174 /// \param length 00175 /// Input the length of the byte array 00176 /// \param dataType 00177 /// Input the type of value to create 00178 /// 00179 /// \return 00180 /// Returns an FdoBLOBValue or an FdoCLOBValue 00181 /// 00182 FDO_API static FdoDataValue* Create(FdoByte* value, FdoInt32 length, FdoDataType dataType); 00183 00184 /// \brief 00185 /// Constructs an instance of an FdoBLOBValue or FdoCLOBValue using the specified arguments. 00186 /// 00187 /// \param value 00188 /// Input a byte array 00189 /// \param dataType 00190 /// Input the type of value to create 00191 /// 00192 /// \return 00193 /// Returns an FdoBLOBValue or an FdoCLOBValue 00194 /// 00195 FDO_API static FdoDataValue* Create(FdoByteArray* value, FdoDataType dataType); 00196 00197 /// \brief 00198 /// Gets the data type of the FdoDataValue. 00199 /// 00200 /// \return 00201 /// Returns an FdoDataType 00202 /// 00203 FDO_API virtual FdoDataType GetDataType() = 0; 00204 00205 /// \brief 00206 /// Returns true if the FdoDataValue represents a null value. 00207 /// 00208 /// \return 00209 /// Returns true if the FdoDataValue represents a null value 00210 /// 00211 FDO_API virtual bool IsNull(); 00212 00213 /// \brief 00214 /// Sets the FdoDataValue to a null value of the specified type. 00215 /// 00216 /// \return 00217 /// Returns nothing 00218 /// 00219 FDO_API virtual void SetNull(); 00220 00221 /// \brief 00222 /// Gets the literal value type of the FdoDataValue. 00223 /// 00224 /// \return 00225 /// Returns an FdoLiteralValueType 00226 /// 00227 FDO_API virtual FdoLiteralValueType GetLiteralValueType () const; 00228 00229 static FdoDataValue* Create(FdoString* value, FdoDataType dataType); 00230 00231 // Get the value as an XML format string. 00232 FdoString* GetXmlValue(); 00233 00234 /// \cond DOXYGEN-IGNORE 00235 protected: 00236 /// \brief 00237 /// Compares this data value with another data value 00238 /// 00239 /// \param other 00240 /// Input the other data value 00241 /// 00242 /// \return 00243 /// Returns: 00244 /// FdoCompareType_Equal when this and the other value are equal or both null. 00245 /// FdoCompareType_Greater when this value is greater than the other value 00246 /// FdoCompareType_Less when this value is less than the other value 00247 /// FdoCompareType_Undefined when these two values cannot be compared. Cases where this happens 00248 /// are: 00249 /// - one value is null and the other is not null 00250 /// - the values have incompatible types (e.g. Int32 and DateTime). 00251 /// 00252 /// 00253 FdoCompareType Compare( FdoDataValue* other ); 00254 00255 // ReverseCompare is the same as Compare except for two of the return values: 00256 /// FdoCompareType_Greater when the other value is greater than this value 00257 /// FdoCompareType_Less when the other value is less than this value 00258 FdoCompareType ReverseCompare( FdoDataValue* other ); 00259 00260 /// \brief 00261 /// Type-specific comparison function. Each sub-class has its own implementation. 00262 /// 00263 /// \param other 00264 /// Input the other data value 00265 /// 00266 /// \return 00267 /// Returns: 00268 /// FdoCompareType_Equal when this and the other value are equal or both null. 00269 /// FdoCompareType_Greater when this value is greater than the other value 00270 /// FdoCompareType_Less when this value is less than the other value 00271 /// FdoCompareType_Undefined when these two values cannot be compared. Cases where this happens 00272 /// are: 00273 /// - one value is null and the other is not null 00274 /// - the values have incompatible types (e.g. Int32 and DateTime). 00275 /// 00276 /// Base implementation always returns FdoCompareType_Undefined. 00277 /// 00278 /// 00279 virtual FdoCompareType DoCompare( FdoDataValue* other ); 00280 00281 bool m_isNull; 00282 FdoStringP m_XmlValue; // Manages GetXmlValue return string when datatype is datetime. 00283 /// \endcond 00284 00285 }; 00286 00287 /// \ingroup (typedefs) 00288 /// \brief 00289 /// FdoDataValueP is a FdoPtr on FdoDataValue, provided for convenience. 00290 typedef FdoPtr<FdoDataValue> FdoDataValueP; 00291 00292 #endif 00293 00294
Comments or suggestions? Send us feedback. |