summaryrefslogtreecommitdiff
path: root/qmake/include/quuid.h
Unidiff
Diffstat (limited to 'qmake/include/quuid.h') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/include/quuid.h168
1 files changed, 168 insertions, 0 deletions
diff --git a/qmake/include/quuid.h b/qmake/include/quuid.h
new file mode 100644
index 0000000..591d2f1
--- a/dev/null
+++ b/qmake/include/quuid.h
@@ -0,0 +1,168 @@
1/****************************************************************************
2** $Id$
3**
4** Definition of QUuid class
5**
6** Created: 010523
7**
8** Copyright (C) 1992-2001 Trolltech AS. All rights reserved.
9**
10** This file is part of the tools module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QUUID_H
39#define QUUID_H
40
41#ifndef QT_H
42#include <qstring.h>
43#endif // QT_H
44
45#include <string.h>
46
47#if defined(Q_OS_WIN32)
48#ifndef GUID_DEFINED
49#define GUID_DEFINED
50typedef struct _GUID
51{
52 ulong Data1;
53 ushort Data2;
54 ushort Data3;
55 uchar Data4[ 8 ];
56} GUID;
57#endif
58#endif
59
60struct Q_EXPORT QUuid
61{
62 QUuid()
63 {
64 memset( this, 0, sizeof(QUuid) );
65 }
66 QUuid( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 )
67 {
68 data1 = l;
69 data2 = w1;
70 data3 = w2;
71 data4[0] = b1;
72 data4[1] = b2;
73 data4[2] = b3;
74 data4[3] = b4;
75 data4[4] = b5;
76 data4[5] = b6;
77 data4[6] = b7;
78 data4[7] = b8;
79 }
80 QUuid( const QUuid &uuid )
81 {
82 memcpy( this, &uuid, sizeof(QUuid) );
83 }
84#ifndef QT_NO_QUUID_STRING
85 QUuid( const QString & );
86 QUuid( const char * );
87 QString toString() const;
88 operator QString() const { return toString(); }
89#endif
90 bool isNull() const;
91
92 QUuid &operator=(const QUuid &orig )
93 {
94 memcpy( this, &orig, sizeof(QUuid) );
95 return *this;
96 }
97
98 bool operator==(const QUuid &orig ) const
99 {
100 uint i;
101 if ( data1 != orig.data1 || data2 != orig.data2 ||
102 data3 != orig.data3 )
103 return FALSE;
104
105 for( i = 0; i < 8; i++ )
106 if ( data4[i] != orig.data4[i] )
107 return FALSE;
108
109 return TRUE;
110 }
111
112 bool operator!=(const QUuid &orig ) const
113 {
114 return !( *this == orig );
115 }
116
117#if defined(Q_OS_WIN32)
118 // On Windows we have a type GUID that is used by the platform API, so we
119 // provide convenience operators to cast from and to this type.
120 QUuid( const GUID &guid )
121 {
122 memcpy( this, &guid, sizeof(GUID) );
123 }
124
125 QUuid &operator=(const GUID &orig )
126 {
127 memcpy( this, &orig, sizeof(QUuid) );
128 return *this;
129 }
130
131 operator GUID() const
132 {
133 GUID guid = { data1, data2, data3, { data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7] } };
134 return guid;
135 }
136
137 bool operator==( const GUID &guid ) const
138 {
139 uint i;
140 if ( data1 != guid.Data1 || data2 != guid.Data2 ||
141 data3 != guid.Data3 )
142 return FALSE;
143
144 for( i = 0; i < 8; i++ )
145 if ( data4[i] != guid.Data4[i] )
146 return FALSE;
147
148 return TRUE;
149 }
150
151 bool operator!=( const GUID &guid ) const
152 {
153 return !( *this == guid );
154 }
155#endif
156
157 uint data1;
158 ushort data2;
159 ushort data3;
160 uchar data4[ 8 ];
161};
162
163#ifndef QT_NO_DATASTREAM
164Q_EXPORT QDataStream &operator<<( QDataStream &, const QUuid & );
165Q_EXPORT QDataStream &operator>>( QDataStream &, QUuid & );
166#endif
167
168#endif //QUUID_H