/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 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 _ODSPATIALREFERENCE_ODVERTICALDATUMDEFINITION_INCLUDED_ #define _ODSPATIALREFERENCE_ODVERTICALDATUMDEFINITION_INCLUDED_ #include "OdEllipsoidDefinition.h" namespace OdSpatialReference { class OdVerticalDatumDefinition; /** \details This template class is a specialization of the OdSmartPtr class for OdVerticalDatumDefinition object pointers. */ typedef OdSmartPtr OdVerticalDatumDefinitionPtr; /** \details This template class is a specialization of the OdArray class for OdVerticalDatumDefinition object pointers. */ typedef OdArray OdVerticalDatumDefinitionArray; class OdVerticalDatumDefinitionImpl; /** \details This class represents a vertical datum definition. */ class TD_SPATIALREFERENCE_API OdVerticalDatumDefinition : public OdDefinitionBase { ODSPREF_RX_DECLARE_MEMBERS(OdVerticalDatumDefinition); public: /** \details Loads and returns vertical datum definition. \param sCode [in] Vertical datum definition code. \param pDatumDefinition [out] Pointer to an OdVerticalDatumDefinition object. \returns Returns eOK if successful, or an appropriate error code if not. */ static OdResult load(const OdString& sCode, OdVerticalDatumDefinitionPtr& pDatumDefinition); /** \details Loads and returns all vertical datum definitions. \param arrDatumDefinition [out] Array of pointers to returned vertical datum definitions. \returns Returns eOK if successful, or an appropriate error code if not. */ static OdResult loadAll(OdVerticalDatumDefinitionArray& arrDatumDefinition); /** \details Returns the EPSG number of this vertical datum definition. \param nEpsgCode [out] EPSG number. \returns Returns eOK if successful, or an appropriate error code if not. */ OdResult getEpsgCode(OdInt16& nEpsgCode) const; /** \details Sets the EPSG number to this vertical datum definition. \param nEpsgCode [in] EPSG number. \returns Returns eOK if successful, or an appropriate error code if not. */ OdResult setEpsgCode(OdInt16 nEpsgCode); /** \details Returns the group string of this vertical datum definition. \param sGroup [out] Group string. \returns Returns eOK if successful, or an appropriate error code if not. */ OdResult getGroup(OdString& sGroup) const; /** \details Sets the group string to this vertical datum definition. \param sGroup [in] Group string. \returns Returns eOK if successful, or an appropriate error code if not. */ OdResult setGroup(const OdString& sGroup); /** \details Checks whether the specified code string is legal for vertical datum definition. \param sCode [in] Vertical datum definition code string. \returns true - if specified code string is valid. */ static bool isLegalCode(const OdString& sCode); /** \details Checks whether the specified description string is legal for vertical datum definition. \param sDescription [in] Vertical datum definition description string. \returns true - if specified description string is valid. */ static bool isLegalDescription(const OdString& sDescription); /** \details Checks whether the specified source string is legal for vertical datum definition. \param sSource [in] Vertical datum definition source string. \returns true - if specified source string is valid. */ static bool isLegalSource(const OdString& sSource); /** \details Checks whether the specified group string is legal for vertical datum definition. \param sGroup [in] Vertical datum definition group string. \returns true - if specified group string is valid. */ static bool isLegalGroup(const OdString& sGroup); }; } #endif //_ODSPATIALREFERENCE_ODVERTICALDATUMDEFINITION_INCLUDED_