/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _ODVALUE_INCLUDED_ #define _ODVALUE_INCLUDED_ #include "TD_PackPush.h" #include "StaticRxObject.h" class OdValueImpl; class OdValue; typedef OdSmartPtr OdValuePtr; /** \details */ class TOOLKIT_EXPORT OdValue : public OdStaticRxObject { public: ODRX_HEAP_OPERATORS(); enum DataType { kUnknown = 0x00, kLong = 0x01, kDouble = 0x02, kString = 0x04, kDate = 0x08, kPoint = 0x10, k3dPoint = 0x20, kObjectId = 0x40, kBuffer = 0x80, kResbuf = 0x100, kGeneral = 0x200, kColor = 0x400 }; enum UnitType { kUnitless = 0x00, kDistance = 0x01, kAngle = 0x02, kArea = 0x04, kVolume = 0x08, kCurrency = 0x10, kPercentage = 0x20 }; enum ParseOption { kParseOptionNone = 0x00, kSetDefaultFormat = 0x01, kPreserveMtextFormat = 0x02, kConvertTextToValue = 0x04, kChangeDataType = 0x08, kParseTextForFieldCode = 0x10 }; enum FormatOption { kFormatOptionNone = 0x00, kForEditing = 0x01, kForExpression = 0x02, kUseMaximumPrecision = 0x04, kIgnoreMtextFormat = 0x08 }; public: ODRX_DECLARE_MEMBERS(OdValue); OdValue(void); ~OdValue(void); OdValue(const OdValue& value); OdValue(const OdString& value); OdValue(OdInt32 value); OdValue(double value); OdValue(const OdInt64& date); OdValue(double x, double y); OdValue(double x, double y, double z); OdValue(const OdDbObjectId& objectId); OdValue(const OdResBufPtr& resBuf); // OdValue(const OdRxVariantValue& var); OdValue(const void* buffer, OdInt32 bufferSize); /** \details Sets the datatype of this FieldValue object to kUnknown. \remarks This function always returns true. */ bool reset(); /** \details Returns the datatype of this FieldValue object. \remarks dataType() returns one of the following: Name Value kUnknown 0x00 kLong 0x01 kDouble 0x02 kString 0x04 kDate 0x08 kPoint 0x10 k3dPoint 0x20 kObjectId 0x40 kBuffer 0x80 kResbuf 0x100
*/ OdValue::DataType dataType () const; /** \details Returns true if and only if the datatype of this FieldValue is not kUnknown. */ bool isValid () const; /** \remarks Returns this object as the specified type. \note OdInt64 is used for date values. */ operator OdString() const; operator OdInt32() const; operator double() const; operator OdInt64() const; operator OdDbObjectId() const; OdValue& operator=(const OdValue& value); OdValue& operator=(const OdString& value); OdValue& operator=(OdInt32 value); OdValue& operator=(double value); OdValue& operator=(OdInt64 date); OdValue& operator=(const OdDbObjectId& objectId); OdValue& operator=(const OdResBufPtr& resBuf); // OdValue& operator= (const OdRxVariantValue& var); // bool get (const OdChar*& pszValue) const; /** \details Returns the value of this FieldValue object. \param value [out] Receives the value. \param date [out] Receives the date value \param x [out] Receives the X-coordinate of the point. \param y [out] Receives the Y-coordinate of the point. \param z [out] Receives the Z-coordinate of the point. \param resBuf [out] Receives the ResBuf list. \param objectId [in] Object ID. \remarks Returns true if and only if successful. */ bool get(OdString& value) const; bool get(OdInt32& value) const; bool get(double& value) const; bool get(OdInt64& date) const; bool get(double& x, double& y) const; bool get(double& x, double& y, double& z) const; bool get(OdDbObjectId& objectId) const; bool get(OdResBufPtr& resBuf) const; // bool get(OdRxVariantValue& var) const; /** \param pBuffer [out] Receives a pointer to the buffer. \param bufferSize [out] Receives the buffer size. */ bool get(void*& pBuf, OdInt32& bufferSize) const; /** \details Sets the value for this FieldValue object according to the arguments. \param value [in] Value. \param date [in] Date value \param x [in] X-coordinate of the point. \param y [in] Y-coordinate of the point. \param z [in] Z-coordinate of the point. \param buffer [in] Buffer. \param bufferSize [in] Buffer size. \param resBuf [in] ResBuf list. \param objectId [in] Object ID. \remarks Returns true if and only if successful. */ bool set(const OdValue& value); bool set(const OdString& value); bool set(OdInt32 value); bool set(double value); bool set(const OdInt64& date); bool set(double x, double y); bool set(double x, double y, double z); bool set(const OdDbObjectId& objectId); bool set(const OdResBufPtr& resBuf); // bool set (const OdRxVariantValue& var); bool set(const void* buffer, OdInt32 bufferSize); // bool reset (void); bool reset (OdValue::DataType nDataType); // bool resetValue (void); OdValue::UnitType unitType (void) const; void setUnitType (OdValue::UnitType nUnitType); OdString getFormat (void) const; void setFormat (const OdString& pszFormat); // bool parse (const OdString& pszText, // OdValue::DataType nDataType, // OdValue::UnitType nUnitType, // const ACHAR* pszFormat, // OdValue::ParseOption nOption, // const AcDbObjectId* pTextStyleId); // OdString format(OdDbDatabase* pDb = 0) const; OdString format(OdValue::FormatOption nOption, OdDbDatabase* pDb = 0); OdString format(const OdString& pszFormat, OdValue::FormatOption nOption, OdDbDatabase* pDb = 0); bool format(const OdString& pszFormat, OdString& pszValue, OdDbDatabase* pDb = 0) const; bool convertTo (OdValue::DataType nDataType, OdValue::UnitType nUnitType); bool convertTo (OdValue::DataType nDataType, OdValue::UnitType nUnitType, bool bResetIfIncompatible); virtual OdResult dwgInFields ( OdDbDwgFiler* pFiler); virtual void dwgOutFields( OdDbDwgFiler* pFiler) const; virtual OdResult dxfInFields ( OdDbDxfFiler* pFiler); virtual void dxfOutFields( OdDbDxfFiler* pFiler) const; protected: OdValue(OdValueImpl* pValImpl); friend class OdDbSystemInternals; OdValueImpl* m_pImpl; }; #include "TD_PackPop.h" #endif // _ODVALUE_INCLUDED_