summaryrefslogtreecommitdiff
path: root/library/quuid.h
authorar <ar>2004-06-06 19:43:58 (UTC)
committer ar <ar>2004-06-06 19:43:58 (UTC)
commita1ef1c3fe8700a16329358288299276fd16c8fa0 (patch) (side-by-side diff)
tree3db826a2b2df0fd407721aaefe03bfc61ffd35f0 /library/quuid.h
parentd5f6057374caf1c81e02628f0fcca01394b1dc9d (diff)
downloadopie-a1ef1c3fe8700a16329358288299276fd16c8fa0.zip
opie-a1ef1c3fe8700a16329358288299276fd16c8fa0.tar.gz
opie-a1ef1c3fe8700a16329358288299276fd16c8fa0.tar.bz2
- solve problems with padded memory - dont use memcpy
Diffstat (limited to 'library/quuid.h') (more/less context) (ignore whitespace changes)
-rw-r--r--library/quuid.h147
1 files changed, 50 insertions, 97 deletions
diff --git a/library/quuid.h b/library/quuid.h
index 841a00f..1575711 100644
--- a/library/quuid.h
+++ b/library/quuid.h
@@ -25,49 +25,45 @@
#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) );
+ memset( this, 0, sizeof(QUuid) );
}
QUuid( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 )
{
- data1 = l;
- data2 = w1;
- data3 = w2;
- data4[0] = b1;
- data4[1] = b2;
- data4[2] = b3;
- data4[3] = b4;
- data4[4] = b5;
- data4[5] = b6;
- data4[6] = b7;
- data4[7] = b8;
+ data1 = l;
+ data2 = w1;
+ data3 = w2;
+ data4[0] = b1;
+ data4[1] = b2;
+ data4[2] = b3;
+ data4[3] = b4;
+ data4[4] = b5;
+ data4[5] = b6;
+ data4[6] = b7;
+ data4[7] = b8;
}
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,84 +72,41 @@ struct Q_EXPORT QUuid
QUuid &operator=(const QUuid &orig )
{
- memcpy( this, &orig, sizeof(QUuid) );
- return *this;
- }
+ uint i;
- bool operator==(const QUuid &orig ) const
- {
- return !memcmp( this, &orig, sizeof(QUuid) );
- }
+ data1 = orig.data1;
+ data2 = orig.data2;
+ data3 = orig.data3;
+ for( i = 0; i < 8; i++ )
+ data4[ i ] = orig.data4[ i ];
- bool operator!=(const QUuid &orig ) const
- {
- return !( *this == orig );
+ return *this;
}
- 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);
- }
-
-#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 )
+ bool operator==(const QUuid &orig ) const
{
- memcpy( this, &guid, sizeof(GUID) );
- }
+ uint i;
+ if ( data1 != orig.data1 || data2 != orig.data2 ||
+ data3 != orig.data3 )
+ return FALSE;
- QUuid &operator=(const GUID &orig )
- {
- memcpy( this, &orig, sizeof(QUuid) );
- return *this;
- }
+ for( i = 0; i < 8; i++ )
+ if ( data4[i] != orig.data4[i] )
+ return FALSE;
- 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;
+ return TRUE;
}
- bool operator==( const GUID &guid ) const
+ bool operator!=(const QUuid &orig ) const
{
- return !memcmp( this, &guid, sizeof(QUuid) );
+ return !( *this == orig );
}
- bool operator!=( const GUID &guid ) const
- {
- return !( *this == guid );
- }
-
- 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);
- }
-
-#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::Variant variant() const;
- QUuid &operator=(const uuid_t &orig )
- {
- memcpy( this, &orig, sizeof(uuid_t) );
- return *this;
- }
-#endif
-
ulong data1;
ushort data2;
ushort data3;