summaryrefslogtreecommitdiff
path: root/qmake/tools/quuid.cpp
Side-by-side diff
Diffstat (limited to 'qmake/tools/quuid.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/tools/quuid.cpp230
1 files changed, 230 insertions, 0 deletions
diff --git a/qmake/tools/quuid.cpp b/qmake/tools/quuid.cpp
new file mode 100644
index 0000000..fd99abf
--- a/dev/null
+++ b/qmake/tools/quuid.cpp
@@ -0,0 +1,230 @@
+/****************************************************************************
+** $Id$
+**
+** Implementation of QUuid class
+**
+** Copyright (C) 2000-2001 Trolltech AS. All rights reserved.
+**
+** This file is part of the tools module of the Qt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.QPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about Qt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for QPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "quuid.h"
+
+#include <qdatastream.h>
+
+/*!
+ \class QUuid quuid.h
+ \reentrant
+ \brief The QUuid class defines a Universally Unique Identifier (UUID).
+
+ \internal
+
+ For objects or declarations that need to be identified uniquely, UUIDs (also known as GUIDs) are widely
+ used in order to assign a fixed and easy to compare value to this object or declaration. The 128bit value
+ of an UUID is generated by an algorithm that guarantees a value that is unique in time and space.
+
+ In Qt, UUIDs are wrapped by the QUuid struct which provides convenience functions for comparing and coping
+ this value. The QUuid struct is used in Qt's component model to identify interfaces. Most platforms provide a tool to
+ generate new UUIDs (uuidgen, guidgen), and the Qt distribution includes a graphical tool \e quuidgen that generates
+ the UUIDs in a programmer friendly format.
+
+ \sa QUnknownInterface
+*/
+
+/*!
+ \fn QUuid::QUuid()
+
+ Creates the null UUID {00000000-0000-0000-0000-000000000000}.
+*/
+
+/*!
+ \fn QUuid::QUuid( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 )
+
+ Creates an UUID with the value specified by the parameters, \a l, \a
+ w1, \a w2, \a b1, \a b2, \a b3, \a b4, \a b5, \a b6, \a b7, \a b8.
+
+ Example:
+ \code
+ // {67C8770B-44F1-410A-AB9A-F9B5446F13EE}
+ QUuid IID_MyInterface( 0x67c8770b, 0x44f1, 0x410a, 0xab, 0x9a, 0xf9, 0xb5, 0x44, 0x6f, 0x13, 0xee )
+ \endcode
+*/
+
+/*!
+ \fn QUuid::QUuid( const QUuid &orig )
+
+ Creates a copy of the QUuid \a orig.
+*/
+#ifndef QT_NO_QUUID_STRING
+/*!
+ Creates a QUuid object from the string \a text. Right now, the function
+ can only convert the format {12345678-1234-1234-1234-123456789ABC} and
+ will create the null UUID when the conversion fails.
+*/
+QUuid::QUuid( const QString &text )
+{
+ bool ok;
+ QString temp = text.upper();
+
+ data1 = temp.mid( 1, 8 ).toULong( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+
+ data2 = temp.mid( 10, 4 ).toUInt( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+ data3 = temp.mid( 15, 4 ).toUInt( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+ data4[0] = temp.mid( 20, 2 ).toUInt( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+ data4[1] = temp.mid( 22, 2 ).toUInt( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+ for ( int i = 2; i<8; i++ ) {
+ data4[i] = temp.mid( 25 + (i-2)*2, 2 ).toUShort( &ok, 16 );
+ if ( !ok ) {
+ *this = QUuid();
+ return;
+ }
+ }
+}
+
+/*!
+ \overload
+*/
+QUuid::QUuid( const char *text )
+{
+ *this = QUuid( QString(text) );
+}
+#endif
+/*!
+ \fn QUuid QUuid::operator=(const QUuid &uuid )
+
+ Assigns the value of \a uuid to this QUuid object.
+*/
+
+/*!
+ \fn bool QUuid::operator==(const QUuid &other) const
+
+ Returns TRUE if this QUuid and the \a other QUuid are identical, otherwise returns FALSE.
+*/
+
+/*!
+ \fn bool QUuid::operator!=(const QUuid &other) const
+
+ Returns TRUE if this QUuid and the \a other QUuid are different, otherwise returns FALSE.
+*/
+#ifndef QT_NO_QUUID_STRING
+/*!
+ \fn QUuid::operator QString() const
+
+ Returns the string representation of the uuid.
+
+ \sa toString()
+*/
+
+/*!
+ QString QUuid::toString() const
+
+ Returns the string representation of the uuid.
+*/
+QString QUuid::toString() const
+{
+ QString result;
+
+ result = "{" + QString::number( data1, 16 ).rightJustify( 8, '0' ) + "-";
+ result += QString::number( (int)data2, 16 ).rightJustify( 4, '0' ) + "-";
+ result += QString::number( (int)data3, 16 ).rightJustify( 4, '0' ) + "-";
+ result += QString::number( (int)data4[0], 16 ).rightJustify( 2, '0' );
+ result += QString::number( (int)data4[1], 16 ).rightJustify( 2, '0' ) + "-";
+ for ( int i = 2; i < 8; i++ )
+ result += QString::number( (int)data4[i], 16 ).rightJustify( 2, '0' );
+
+ return result + "}";
+}
+#endif
+
+#ifndef QT_NO_DATASTREAM
+/*!
+ \relates QUuid
+ Writes the \a id to the datastream \a s.
+*/
+QDataStream &operator<<( QDataStream &s, const QUuid &id )
+{
+ s << (Q_UINT32)id.data1;
+ s << (Q_UINT16)id.data2;
+ s << (Q_UINT16)id.data3;
+ for (int i = 0; i < 8; i++ )
+ s << (Q_UINT8)id.data4[i];
+ return s;
+}
+
+/*!
+ \relates QUuid
+ Reads a universally unique id from from the stream \a s into \a id.
+*/
+QDataStream &operator>>( QDataStream &s, QUuid &id )
+{
+ Q_UINT32 u32;
+ Q_UINT16 u16;
+ Q_UINT8 u8;
+ s >> u32;
+ id.data1 = u32;
+ s >> u16;
+ id.data2 = u16;
+ s >> u16;
+ id.data3 = u16;
+ for (int i = 0; i < 8; i++ ) {
+ s >> u8;
+ id.data4[i] = u8;
+ }
+ return s;
+}
+#endif
+
+/*!
+ Returns TRUE if this is the null UUID {00000000-0000-0000-0000-000000000000}, otherwise returns FALSE.
+*/
+bool QUuid::isNull() const
+{
+ return data4[0] == 0 && data4[1] == 0 && data4[2] == 0 && data4[3] == 0 &&
+ data4[4] == 0 && data4[5] == 0 && data4[6] == 0 && data4[7] == 0 &&
+ data1 == 0 && data2 == 0 && data3 == 0;
+}