/////////////////////////////////////////////////////////////////////////////// // 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 ODDBHANDLE #define ODDBHANDLE /*!DOM*/ #include "TD_PackPush.h" #include "DbRootExport.h" #include "OdArrayPreDef.h" #include "OdaDefs.h" #include "OdString.h" /** \details Returns the decimal value of a hexadecimal digit. \param hexDigit [in] Hex digit. Examples: getHexValue('A') returns 10, etc. */ DBROOT_EXPORT int getHexValue( int hexDigit); /** \details Returns the 64 bit integer value corresponding to the passed in string. \param pStr [in] String representation of an integer. */ //TOOLKIT_EXPORT OdInt64 atoi64(const OdChar* pStr); //TOOLKIT_EXPORT void i64toA(const OdInt64 &val, OdChar* pStr); /** \details This class encapsulates the 64-bit integer handles associated with OdDbObject instances. Library: TD_Db \remarks Handles are persistent and unique within a database. Handles are not, however, unique between databases. */ class DBROOT_EXPORT OdDbHandle { public: OdDbHandle() : m_val(0) {} OdDbHandle(const OdDbHandle& value) : m_val(value.m_val) {} OdDbHandle(OdUInt64 value) : m_val(value) {} OdDbHandle(const OdChar* value) { *this = value; } OdDbHandle(const char* value) { *this = value; } OdDbHandle(const OdString& value) { *this = (const OdChar*)value; } OdDbHandle(const OdAnsiString& value) { *this = (const char*)value; } OdDbHandle(int value) : m_val(value) {} OdDbHandle& operator=(OdUInt64 value) { m_val = value; return *this; } OdDbHandle& operator=(const OdChar* value); OdDbHandle& operator=(const char* value); OdDbHandle& operator=(const OdDbHandle& value) { m_val = value.m_val; return *this; } OdDbHandle& operator=(int value) { m_val = value; return *this; } operator OdUInt64() const { return m_val; } /** \details Returns the hexidecmal representation of this Handle object as a null terminated string. \param pBuf [in] Pointer to the buffer to receive the string. \note The buffer must be at least 17 bytes long. */ void getIntoAsciiBuffer( OdChar* pBuf) const; /** \details Returns the hexidecmal representation of this Handle object as an OdString. */ OdString ascii() const; /** \details Returns true and only if this Handle object is null. */ bool isNull() const { return m_val == 0; } bool operator == ( OdUInt64 value) const { return m_val == value; } bool operator != ( OdUInt64 value) const { return m_val != value; } bool operator > ( OdUInt64 value) const { return m_val > value; } bool operator < ( OdUInt64 value) const { return m_val < value; } bool operator <= ( OdUInt64 value) const { return m_val < value || m_val == value; } bool operator >= ( OdUInt64 value) const { return m_val > value || m_val == value; } OdDbHandle& operator+=( const OdInt64& value) { m_val += value; ODA_ASSERT_ONCE(!isNull()); // check handle stuff overflow return *this; } OdDbHandle operator+( const OdInt64& value) { OdDbHandle res; res.m_val = m_val + value; return res; } /** \details Returns the this Handle object as an array OdUInt8[8]. \param bytes [in] array of bytes to receive the handle. \remarks The low order byte is returned in bytes[0]. \note The buffer must be at least 17 bytes long. */ void bytes( OdUInt8 * bytes) const { OdUInt64 val = m_val; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes++ = (OdUInt8)(val & 0xFF); val >>= 8; *bytes = (OdUInt8)(val & 0xFF); } private: OdUInt64 m_val; }; /** \details This template class is a specialization of the OdArray class for OdDbHandle objects. */ typedef OdArray OdHandleArray; #include "TD_PackPop.h" #endif