Changeset View
Changeset View
Standalone View
Standalone View
extern/opennurbs/opennurbs_uuid.h
- This file was added.
| /* $NoKeywords: $ */ | |||||
| /* | |||||
| // | |||||
| // Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved. | |||||
| // OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert | |||||
| // McNeel & Associates. | |||||
| // | |||||
| // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. | |||||
| // ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF | |||||
| // MERCHANTABILITY ARE HEREBY DISCLAIMED. | |||||
| // | |||||
| // For complete openNURBS copyright information see <http://www.opennurbs.org>. | |||||
| // | |||||
| //////////////////////////////////////////////////////////////// | |||||
| */ | |||||
| #if !defined(OPENNURBS_UUID_INC_) | |||||
| #define OPENNURBS_UUID_INC_ | |||||
| // ON_UUID is a 16 byte universally unique identifier | |||||
| #if defined(UUID_DEFINED) | |||||
| typedef UUID ON_UUID; | |||||
| #elif defined(GUID_DEFINED) | |||||
| typedef GUID ON_UUID; | |||||
| #else | |||||
| #define ON_UUID_DECLARED_AS_CLASS | |||||
| // For uuids, it is critical that the DataN fields have | |||||
| // exactly the sizes specified below. For that reason, | |||||
| // the ON__UINTnn typedefs are used. | |||||
| class ON_CLASS ON_UUID | |||||
| { | |||||
| public: | |||||
| ON__UINT32 Data1; // 32 bit unsigned integer | |||||
| ON__UINT16 Data2; // 16 bit unsigned integer | |||||
| ON__UINT16 Data3; // 16 bit unsigned integer | |||||
| unsigned char Data4[8]; | |||||
| bool operator==(const ON_UUID& other) const; | |||||
| bool operator!=(const ON_UUID& other) const; | |||||
| }; | |||||
| #endif | |||||
| ON_BEGIN_EXTERNC | |||||
| // All bits are zero in ON_nil_uuid and | |||||
| // ON_UuidCompare( ON_nil_uuid, U ) < 0 if U != ON_nil_uuid. | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_nil_uuid; | |||||
| // All bits are one in ON_max_uuid and | |||||
| // ON_UuidCompare( U, ON_max_uuid ) < 0 if U != ON_max_uuid. | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_max_uuid; | |||||
| // Application ids for the versions of Rhino that | |||||
| // write 3dm files. All userdata classed defined | |||||
| // in the core Rhino.exe should use these ids | |||||
| // as the application id. | |||||
| // In situations where you want to use the id | |||||
| // for the current version of Rhino, use | |||||
| // ON_rhino_id and you won't have to update | |||||
| // your code when Rhino versions roll. | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_rhino2_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_rhino3_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_rhino4_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_rhino5_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_rhino_id; | |||||
| // Application ids for usedata written by versions | |||||
| // of opennurbs before userdata had application ids. | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_v2_userdata_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_v3_userdata_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_v4_userdata_id; | |||||
| // Application id for the versions of openNURBS that | |||||
| // write userdata in 3dm files. User data whose class | |||||
| // definition is in opennurbs should use these | |||||
| // ids as the user data application id. | |||||
| // No other user data should use these ids. | |||||
| // The "extern ON_EXTERN_DECL" prefix on the declarations | |||||
| // of these ids was a mistake that will be corrected when | |||||
| // the public SDK can be changed. | |||||
| // In situations where you want to use the id | |||||
| // for the current version of opennurbs, use | |||||
| // ON_opennurbs_id and you won't have to update | |||||
| // your code when opennurbs versions roll. | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_opennurbs4_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_opennurbs5_id; | |||||
| extern ON_EXTERN_DECL const ON_UUID ON_opennurbs_id; | |||||
| ON_END_EXTERNC | |||||
| #if defined(ON_CPLUSPLUS) | |||||
| /* | |||||
| Description: | |||||
| Creates a new uuid.(&a,&b) compares two uuids. | |||||
| Parameters: | |||||
| new_uuid - [out] | |||||
| Returns: | |||||
| True if successful. | |||||
| Remarks: | |||||
| Only works on Windows. | |||||
| */ | |||||
| ON_DECL | |||||
| bool ON_CreateUuid( ON_UUID& uuid ); | |||||
| /* | |||||
| Description: | |||||
| This class is used by ON_UuidIndexList. It is used when | |||||
| uuids are used to search for items that can be found by | |||||
| an integer index. | |||||
| */ | |||||
| class ON_CLASS ON_UuidIndex | |||||
| { | |||||
| public: | |||||
| ON_UuidIndex(); | |||||
| /* | |||||
| Dictionary compare m_id and then m_i. | |||||
| */ | |||||
| static | |||||
| int CompareIdAndIndex( const ON_UuidIndex* a, const ON_UuidIndex* b ); | |||||
| /* | |||||
| Dictionary compare m_id and then m_i. | |||||
| */ | |||||
| static | |||||
| int CompareIndexAndId( const ON_UuidIndex* a, const ON_UuidIndex* b ); | |||||
| /* | |||||
| Compare m_id and ignore m_i. | |||||
| */ | |||||
| static | |||||
| int CompareId( const ON_UuidIndex* a, const ON_UuidIndex* b ); | |||||
| /* | |||||
| Compare m_i and ignore m_id. | |||||
| */ | |||||
| static | |||||
| int CompareIndex( const ON_UuidIndex* a, const ON_UuidIndex* b ); | |||||
| // In cases when there is a discrepancy between the m_id and | |||||
| // m_i, m_id is assumed to be valid unless comments where this | |||||
| // class is used indicate otherwise. | |||||
| ON_UUID m_id; | |||||
| int m_i; | |||||
| }; | |||||
| /* | |||||
| Description: | |||||
| ON_UuidCompare(&a,&b) compares two uuids. | |||||
| Parameters: | |||||
| a - [in] | |||||
| b - [in] | |||||
| Returns: | |||||
| @untitled table | |||||
| -1 a < b | |||||
| 0 a == b | |||||
| +1 a > b | |||||
| Remarks: | |||||
| A NULL pointer is considered < a non-NULL pointer. | |||||
| */ | |||||
| ON_DECL | |||||
| int ON_UuidCompare( | |||||
| const ON_UUID* a, | |||||
| const ON_UUID* b | |||||
| ); | |||||
| /* | |||||
| Description: | |||||
| ON_UuidCompare(a,b) compares two uuids. | |||||
| Parameters: | |||||
| a - [in] | |||||
| b - [in] | |||||
| Returns: | |||||
| @untitled table | |||||
| -1 a < b | |||||
| 0 a == b | |||||
| +1 a > b | |||||
| */ | |||||
| ON_DECL | |||||
| int ON_UuidCompare( | |||||
| const ON_UUID& a, | |||||
| const ON_UUID& b | |||||
| ); | |||||
| /* | |||||
| Description: | |||||
| Test uuid to see if it is nil (identically zero). | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| Returns: | |||||
| true if uuid is nil. | |||||
| */ | |||||
| ON_DECL | |||||
| bool ON_UuidIsNil( | |||||
| const ON_UUID& uuid | |||||
| ); | |||||
| /* | |||||
| Description: | |||||
| Test uuid to see if it is not nil (not identically zero). | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| Returns: | |||||
| true if uuid is not nil (non zero) | |||||
| */ | |||||
| ON_DECL | |||||
| bool ON_UuidIsNotNil( | |||||
| const ON_UUID& uuid | |||||
| ); | |||||
| /* | |||||
| Description: | |||||
| Converts a string like | |||||
| "{85A08515-f383-11d3-BFE7-0010830122F0}" | |||||
| into a uuid. | |||||
| The brackets are optional and are ignored. | |||||
| Hyphens can appear anywhere or be missing. | |||||
| The hex digits can be upper or lower case. | |||||
| Parameters: | |||||
| s - [in] | |||||
| Returns: | |||||
| uuid. | |||||
| If the string is not a uuid, then ON_nil_uuid is returnd. | |||||
| */ | |||||
| ON_DECL | |||||
| ON_UUID ON_UuidFromString( const char* s ); | |||||
| /* | |||||
| Description: | |||||
| Converts a string like | |||||
| "{85A08515-f383-11d3-BFE7-0010830122F0}" | |||||
| into a uuid. | |||||
| The brackets are optional and are ignored. | |||||
| Hyphens can appear anywhere or be missing. | |||||
| The hex digits can be upper or lower case. | |||||
| Parameters: | |||||
| s - [in] | |||||
| Returns: | |||||
| uuid. | |||||
| If the string is not a uuid, then ON_nil_uuid is returnd. | |||||
| */ | |||||
| ON_DECL | |||||
| ON_UUID ON_UuidFromString( const wchar_t* s ); | |||||
| /* | |||||
| Description: | |||||
| Converts a uuid to a null termintated ASCII string like | |||||
| "85a08515-f383-11d3-bfe7-0010830122f0". | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| s - [out] The s[] char array must have length >= 37. | |||||
| The returned char array will have a 36 | |||||
| character uuid in s[0..35] and a null in s[36]. | |||||
| Returns: | |||||
| The pointer to the array is returned. | |||||
| */ | |||||
| ON_DECL | |||||
| char* ON_UuidToString( const ON_UUID& uuid, char* s ); | |||||
| /* | |||||
| Description: | |||||
| Converts a uuid to a null termintated UNICODE string like | |||||
| "85a08515-f383-11d3-bfe7-0010830122f0". | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| s - [out] The s[] wchar_t array must have length >= 37. | |||||
| The returned char array will have a 36 | |||||
| character uuid in s[0..35] and a null in s[36]. | |||||
| Returns: | |||||
| The pointer to the array is returned. | |||||
| */ | |||||
| ON_DECL | |||||
| wchar_t* ON_UuidToString( const ON_UUID& uuid, wchar_t* s ); | |||||
| class ON_String; | |||||
| /* | |||||
| Description: | |||||
| Converts a uuid to a null termintated string like | |||||
| "85a08515-f383-11d3-bfe7-0010830122f0". | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| s - [out] | |||||
| Returns: | |||||
| The pointer to the array is returned. | |||||
| */ | |||||
| ON_DECL | |||||
| const char* ON_UuidToString( const ON_UUID& uuid, ON_String& s); | |||||
| class ON_wString; | |||||
| /* | |||||
| Description: | |||||
| Converts a uuid to a null termintated string like | |||||
| "85a08515-f383-11d3-bfe7-0010830122f0". | |||||
| Parameters: | |||||
| uuid - [in] | |||||
| s - [out] | |||||
| Returns: | |||||
| The pointer to the array is returned. | |||||
| */ | |||||
| ON_DECL | |||||
| const wchar_t* ON_UuidToString( const ON_UUID& uuid, ON_wString& s); | |||||
| #endif | |||||
| #endif | |||||