summaryrefslogtreecommitdiff
path: root/library/quuid.h
Side-by-side diff
Diffstat (limited to 'library/quuid.h') (more/less context) (show whitespace changes)
-rw-r--r--library/quuid.h119
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;