diff options
Diffstat (limited to 'src/corelib/plugin/quuid.h')
-rw-r--r-- | src/corelib/plugin/quuid.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/src/corelib/plugin/quuid.h b/src/corelib/plugin/quuid.h new file mode 100644 index 0000000..95716d4 --- /dev/null +++ b/src/corelib/plugin/quuid.h @@ -0,0 +1,190 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUUID_H +#define QUUID_H + +#include <QtCore/qstring.h> + +QT_BEGIN_HEADER + +#if defined(Q_OS_WIN) +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + ulong Data1; + ushort Data2; + ushort Data3; + uchar Data4[8]; +} GUID, *REFGUID, *LPGUID; +#endif +#endif + + +QT_BEGIN_NAMESPACE + +QT_MODULE(Core) + +struct Q_CORE_EXPORT QUuid +{ + enum Variant { + VarUnknown =-1, + NCS = 0, // 0 - - + DCE = 2, // 1 0 - + Microsoft = 6, // 1 1 0 + Reserved = 7 // 1 1 1 + }; + + enum Version { + VerUnknown =-1, + Time = 1, // 0 0 0 1 + EmbeddedPOSIX = 2, // 0 0 1 0 + Name = 3, // 0 0 1 1 + Random = 4 // 0 1 0 0 + }; + + QUuid() + { + data1 = 0; + data2 = 0; + data3 = 0; + for(int i = 0; i < 8; i++) + data4[i] = 0; + } + 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; + } +#ifndef QT_NO_QUUID_STRING + QUuid(const QString &); + QUuid(const char *); + QString toString() const; + operator QString() const { return toString(); } +#endif + bool isNull() const; + + bool operator==(const QUuid &orig) const + { + uint i; + if (data1 != orig.data1 || data2 != orig.data2 || + data3 != orig.data3) + return false; + + for(i = 0; i < 8; i++) + if (data4[i] != orig.data4[i]) + return false; + + return true; + } + + bool operator!=(const QUuid &orig) const + { + return !(*this == orig); + } + + bool operator<(const QUuid &other) const; + bool operator>(const QUuid &other) const; + +#if defined(Q_OS_WIN) + // 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) + { + data1 = guid.Data1; + data2 = guid.Data2; + data3 = guid.Data3; + for(int i = 0; i < 8; i++) + data4[i] = guid.Data4[i]; + } + + QUuid &operator=(const GUID &guid) + { + *this = QUuid(guid); + 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 + { + return *this == QUuid(guid); + } + + bool operator!=(const GUID &guid) const + { + return !(*this == guid); + } +#endif + static QUuid createUuid(); + QUuid::Variant variant() const; + QUuid::Version version() const; + + uint data1; + ushort data2; + ushort data3; + uchar data4[8]; +}; + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QUuid &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QUuid &); +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QUUID_H |