-rw-r--r-- | library/quuid.h | 119 |
1 files changed, 36 insertions, 83 deletions
diff --git a/library/quuid.h b/library/quuid.h index 841a00f..1575711 100644 --- a/library/quuid.h +++ b/library/quuid.h @@ -25,27 +25,16 @@ #include <qstring.h> #endif // QT_H -#include <memory.h> - -#if defined(Q_OS_WIN32) -#ifndef GUID_DEFINED -#define GUID_DEFINED -typedef struct _GUID -{ - ulong Data1; - ushort Data2; - ushort Data3; - uchar Data4[ 8 ]; -} GUID; -#endif -#endif - -#if defined( Q_WS_QWS ) && !defined( UUID_H_INCLUDED ) -typedef unsigned char uuid_t[16]; -#endif - struct Q_EXPORT QUuid { + enum Variant { + VarUnknown =-1, + NCS = 0, // 0 - - + DCE = 2, // 1 0 - + Microsoft = 6, // 1 1 0 + Reserved = 7 // 1 1 1 + }; + QUuid() { memset( this, 0, sizeof(QUuid) ); @@ -66,8 +55,15 @@ struct Q_EXPORT QUuid } QUuid( const QUuid &uuid ) { - memcpy( this, &uuid, sizeof(QUuid) ); + uint i; + + data1 = uuid.data1; + data2 = uuid.data2; + data3 = uuid.data3; + for( i = 0; i < 8; i++ ) + data4[ i ] = uuid.data4[ i ]; } + #ifndef QT_NO_QUUID_STRING QUuid( const QString & ); QString toString() const; @@ -76,83 +72,40 @@ struct Q_EXPORT QUuid QUuid &operator=(const QUuid &orig ) { - memcpy( this, &orig, sizeof(QUuid) ); - return *this; - } - - bool operator==(const QUuid &orig ) const - { - return !memcmp( this, &orig, sizeof(QUuid) ); - } - - bool operator!=(const QUuid &orig ) const - { - return !( *this == orig ); - } - - inline bool operator<(const QUuid &orig) const - { - return ( memcmp(this, &orig, sizeof(QUuid)) < 0); - } - - inline bool operator>(const QUuid &orig) const - { - return ( memcmp(this, &orig, sizeof(QUuid) ) > 0); - } + uint i; -#if defined(Q_OS_WIN32) - // On Windows we have a type GUID that is used by the platform API, so we - // provide convenience operators to cast from and to this type. - QUuid( const GUID &guid ) - { - memcpy( this, &guid, sizeof(GUID) ); - } + data1 = orig.data1; + data2 = orig.data2; + data3 = orig.data3; + for( i = 0; i < 8; i++ ) + data4[ i ] = orig.data4[ i ]; - QUuid &operator=(const GUID &orig ) - { - memcpy( this, &orig, sizeof(QUuid) ); return *this; } - operator GUID() const - { - GUID guid = { data1, data2, data3, { data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7] } }; - return guid; - } - - bool operator==( const GUID &guid ) const + bool operator==(const QUuid &orig ) const { - return !memcmp( this, &guid, sizeof(QUuid) ); - } + uint i; + if ( data1 != orig.data1 || data2 != orig.data2 || + data3 != orig.data3 ) + return FALSE; - bool operator!=( const GUID &guid ) const - { - return !( *this == guid ); - } + for( i = 0; i < 8; i++ ) + if ( data4[i] != orig.data4[i] ) + return FALSE; - inline bool operator<(const QUuid &orig) const - { - return ( memcmp(this, &orig, sizeof(QUuid) ) < 0); + return TRUE; } - inline bool operator>(const QUuid &orig) const + bool operator!=(const QUuid &orig ) const { - return ( memcmp(this, &orig, sizeof(QUuid) ) > 0); + return !( *this == orig ); } -#endif -#if defined (Q_WS_QWS) - QUuid( uuid_t uuid ) - { - memcpy( this, uuid, sizeof(uuid_t) ); - } + bool operator<(const QUuid &other ) const; + bool operator>(const QUuid &other ) const; - QUuid &operator=(const uuid_t &orig ) - { - memcpy( this, &orig, sizeof(uuid_t) ); - return *this; - } -#endif + QUuid::Variant variant() const; ulong data1; ushort data2; |