Qt 4.8
quuid.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtCore module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QUUID_H
43 #define QUUID_H
44 
45 #include <QtCore/qstring.h>
46 
48 
49 #if defined(Q_OS_WIN)
50 #ifndef GUID_DEFINED
51 #define GUID_DEFINED
52 typedef struct _GUID
53 {
58 } GUID, *REFGUID, *LPGUID;
59 #endif
60 #endif
61 
62 
64 
65 QT_MODULE(Core)
66 
68 {
69  enum Variant {
70  VarUnknown =-1,
71  NCS = 0, // 0 - -
72  DCE = 2, // 1 0 -
73  Microsoft = 6, // 1 1 0
74  Reserved = 7 // 1 1 1
75  };
76 
77  enum Version {
78  VerUnknown =-1,
79  Time = 1, // 0 0 0 1
80  EmbeddedPOSIX = 2, // 0 0 1 0
81  Name = 3, // 0 0 1 1
82  Random = 4 // 0 1 0 0
83  };
84 
86  {
87  data1 = 0;
88  data2 = 0;
89  data3 = 0;
90  for(int i = 0; i < 8; i++)
91  data4[i] = 0;
92  }
93  QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8)
94  {
95  data1 = l;
96  data2 = w1;
97  data3 = w2;
98  data4[0] = b1;
99  data4[1] = b2;
100  data4[2] = b3;
101  data4[3] = b4;
102  data4[4] = b5;
103  data4[5] = b6;
104  data4[6] = b7;
105  data4[7] = b8;
106  }
107 #ifndef QT_NO_QUUID_STRING
108  QUuid(const QString &);
109  QUuid(const char *);
110  QString toString() const;
111  operator QString() const { return toString(); } // ### Qt5 remove
112  QUuid(const QByteArray &);
113  QByteArray toByteArray() const;
114 #endif
115  QByteArray toRfc4122() const;
116  static QUuid fromRfc4122(const QByteArray &);
117  bool isNull() const;
118 
119  bool operator==(const QUuid &orig) const
120  {
121  uint i;
122  if (data1 != orig.data1 || data2 != orig.data2 ||
123  data3 != orig.data3)
124  return false;
125 
126  for(i = 0; i < 8; i++)
127  if (data4[i] != orig.data4[i])
128  return false;
129 
130  return true;
131  }
132 
133  bool operator!=(const QUuid &orig) const
134  {
135  return !(*this == orig);
136  }
137 
138  bool operator<(const QUuid &other) const;
139  bool operator>(const QUuid &other) const;
140 
141 #if defined(Q_OS_WIN)
142  // On Windows we have a type GUID that is used by the platform API, so we
143  // provide convenience operators to cast from and to this type.
144  QUuid(const GUID &guid)
145  {
146  data1 = guid.Data1;
147  data2 = guid.Data2;
148  data3 = guid.Data3;
149  for(int i = 0; i < 8; i++)
150  data4[i] = guid.Data4[i];
151  }
152 
153  QUuid &operator=(const GUID &guid)
154  {
155  *this = QUuid(guid);
156  return *this;
157  }
158 
159  operator GUID() const
160  {
161  GUID guid = { data1, data2, data3, { data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7] } };
162  return guid;
163  }
164 
165  bool operator==(const GUID &guid) const
166  {
167  return *this == QUuid(guid);
168  }
169 
170  bool operator!=(const GUID &guid) const
171  {
172  return !(*this == guid);
173  }
174 #endif
175  static QUuid createUuid();
176  QUuid::Variant variant() const;
177  QUuid::Version version() const;
178 
182  uchar data4[8];
183 };
184 
185 #ifndef QT_NO_DATASTREAM
188 #endif
189 
191 
193 
194 #endif // QUUID_H
bool operator==(const QUuid &orig) const
Returns true if this QUuid and the other QUuid are identical; otherwise returns false.
Definition: quuid.h:119
uint data1
Definition: quuid.h:179
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
#define QT_MODULE(x)
Definition: qglobal.h:2783
Definition: quuid.h:52
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
ulong Data1
Definition: quuid.h:54
bool operator>(const QByteArray &a1, const QByteArray &a2)
Definition: qbytearray.h:551
QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8)
Creates a UUID with the value specified by the parameters, l, w1, w2, b1, b2, b3, b4...
Definition: quuid.h:93
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
Version
This enum defines the values used in the Version field {version field} of the UUID.
Definition: quuid.h:77
The QString class provides a Unicode character string.
Definition: qstring.h:83
bool operator<(int priority, const QPair< QRunnable *, int > &p)
Definition: qthreadpool.cpp:50
bool operator!=(const GUID &guid) const
Returns true if this UUID is not equal to the Windows GUID guid; otherwise returns false...
Definition: quuid.h:170
ushort data3
Definition: quuid.h:181
unsigned char uchar
Definition: qglobal.h:994
static QString toString(Register *reg, int type, bool *ok=0)
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
QUuid()
Creates the null UUID.
Definition: quuid.h:85
unsigned int uint
Definition: qglobal.h:996
unsigned long ulong
Definition: qglobal.h:997
Variant
This enum defines the values used in the Variant field {variant field} of the UUID.
Definition: quuid.h:69
struct _GUID * REFGUID
#define Q_CORE_EXPORT
Definition: qglobal.h:1449
unsigned short ushort
Definition: qglobal.h:995
uchar Data4[8]
Definition: quuid.h:57
Q_CORE_EXPORT QDataStream & operator>>(QDataStream &, QUuid &)
QUuid(const GUID &guid)
Casts a Windows guid to a Qt QUuid.
Definition: quuid.h:144
ushort Data3
Definition: quuid.h:56
QFactoryLoader * l
QUuid & operator=(const GUID &guid)
Assigns a Windows guid to a Qt QUuid.
Definition: quuid.h:153
The QDataStream class provides serialization of binary data to a QIODevice.
Definition: qdatastream.h:71
uchar data4[8]
Definition: quuid.h:182
const char * variant
#define QT_END_HEADER
Definition: qglobal.h:137
struct _GUID * LPGUID
ushort Data2
Definition: quuid.h:55
bool operator==(const GUID &guid) const
Returns true if this UUID is equal to the Windows GUID guid; otherwise returns false.
Definition: quuid.h:165
ushort data2
Definition: quuid.h:180
struct _GUID GUID
Q_CORE_EXPORT QDataStream & operator<<(QDataStream &, const QUuid &)
The QUuid class stores a Universally Unique Identifier (UUID).
Definition: quuid.h:67
static bool isNull(const QVariant::Private *d)
Definition: qvariant.cpp:300
bool operator!=(const QUuid &orig) const
Returns true if this QUuid and the other QUuid are different; otherwise returns false.
Definition: quuid.h:133