source: trunk/src/dbus/qdbusextratypes.h

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 6.1 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtDBus module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QDBUSEXTRATYPES_H
43#define QDBUSEXTRATYPES_H
44
45// define some useful types for D-BUS
46
47#include <QtCore/qvariant.h>
48#include <QtCore/qstring.h>
49#include <QtDBus/qdbusmacros.h>
50
51#ifndef QT_NO_DBUS
52
53QT_BEGIN_HEADER
54
55QT_BEGIN_NAMESPACE
56
57QT_MODULE(DBus)
58
59// defined in qhash.cpp
60Q_CORE_EXPORT uint qHash(const QString &key);
61
62class Q_DBUS_EXPORT QDBusObjectPath : private QString
63{
64public:
65 inline QDBusObjectPath() { }
66
67 inline explicit QDBusObjectPath(const char *path);
68 inline explicit QDBusObjectPath(const QLatin1String &path);
69 inline explicit QDBusObjectPath(const QString &path);
70 inline QDBusObjectPath &operator=(const QDBusObjectPath &path);
71
72 inline void setPath(const QString &path);
73
74 inline QString path() const
75 { return *this; }
76
77private:
78 void check();
79};
80
81inline QDBusObjectPath::QDBusObjectPath(const char *objectPath)
82 : QString(QString::fromLatin1(objectPath))
83{ check(); }
84
85inline QDBusObjectPath::QDBusObjectPath(const QLatin1String &objectPath)
86 : QString(objectPath)
87{ check(); }
88
89inline QDBusObjectPath::QDBusObjectPath(const QString &objectPath)
90 : QString(objectPath)
91{ check(); }
92
93inline QDBusObjectPath &QDBusObjectPath::operator=(const QDBusObjectPath &_path)
94{ QString::operator=(_path); check(); return *this; }
95
96inline void QDBusObjectPath::setPath(const QString &objectPath)
97{ QString::operator=(objectPath); check(); }
98
99inline bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
100{ return lhs.path() == rhs.path(); }
101
102inline bool operator!=(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
103{ return lhs.path() != rhs.path(); }
104
105inline bool operator<(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
106{ return lhs.path() < rhs.path(); }
107
108inline uint qHash(const QDBusObjectPath &objectPath)
109{ return qHash(objectPath.path()); }
110
111
112class Q_DBUS_EXPORT QDBusSignature : private QString
113{
114public:
115 inline QDBusSignature() { }
116
117 inline explicit QDBusSignature(const char *signature);
118 inline explicit QDBusSignature(const QLatin1String &signature);
119 inline explicit QDBusSignature(const QString &signature);
120 inline QDBusSignature &operator=(const QDBusSignature &signature);
121
122 inline void setSignature(const QString &signature);
123
124 inline QString signature() const
125 { return *this; }
126
127private:
128 void check();
129};
130
131inline QDBusSignature::QDBusSignature(const char *dBusSignature)
132 : QString(QString::fromAscii(dBusSignature))
133{ check(); }
134
135inline QDBusSignature::QDBusSignature(const QLatin1String &dBusSignature)
136 : QString(dBusSignature)
137{ check(); }
138
139inline QDBusSignature::QDBusSignature(const QString &dBusSignature)
140 : QString(dBusSignature)
141{ check(); }
142
143inline QDBusSignature &QDBusSignature::operator=(const QDBusSignature &dbusSignature)
144{ QString::operator=(dbusSignature); check(); return *this; }
145
146inline void QDBusSignature::setSignature(const QString &dBusSignature)
147{ QString::operator=(dBusSignature); check(); }
148
149inline bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs)
150{ return lhs.signature() == rhs.signature(); }
151
152inline bool operator!=(const QDBusSignature &lhs, const QDBusSignature &rhs)
153{ return lhs.signature() != rhs.signature(); }
154
155inline bool operator<(const QDBusSignature &lhs, const QDBusSignature &rhs)
156{ return lhs.signature() < rhs.signature(); }
157
158inline uint qHash(const QDBusSignature &signature)
159{ return qHash(signature.signature()); }
160
161class QDBusVariant : private QVariant
162{
163public:
164 inline QDBusVariant() { }
165 inline explicit QDBusVariant(const QVariant &variant);
166
167 inline void setVariant(const QVariant &variant);
168
169 inline QVariant variant() const
170 { return *this; }
171};
172
173inline QDBusVariant::QDBusVariant(const QVariant &dBusVariant)
174 : QVariant(dBusVariant) { }
175
176inline void QDBusVariant::setVariant(const QVariant &dBusVariant)
177{ QVariant::operator=(dBusVariant); }
178
179inline bool operator==(const QDBusVariant &v1, const QDBusVariant &v2)
180{ return v1.variant() == v2.variant(); }
181
182QT_END_NAMESPACE
183
184Q_DECLARE_METATYPE(QDBusVariant)
185Q_DECLARE_METATYPE(QDBusObjectPath)
186Q_DECLARE_METATYPE(QList<QDBusObjectPath>)
187Q_DECLARE_METATYPE(QDBusSignature)
188Q_DECLARE_METATYPE(QList<QDBusSignature>)
189
190QT_END_HEADER
191
192#endif // QT_NO_DBUS
193#endif
Note: See TracBrowser for help on using the repository browser.