1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the QtSystems module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL21$
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 The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22** following information to ensure the GNU Lesser General Public License
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25**
26** As a special exception, The Qt Company gives you certain additional
27** rights. These rights are described in The Qt Company LGPL Exception
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29**
30** $QT_END_LICENSE$
31**
32****************************************************************************/
33
34#ifndef QSERVICEINTERFACEDESCRIPTOR_H
35#define QSERVICEINTERFACEDESCRIPTOR_H
36
37#include "qserviceframeworkglobal.h"
38#include <QString>
39#include <QVariant>
40#include "qservice.h"
41
42QT_USE_NAMESPACE
43
44#ifdef SERVICE_XML_GENERATOR
45#undef Q_SERVICEFW_EXPORT
46#define Q_SERVICEFW_EXPORT
47#endif
48
49
50QT_BEGIN_NAMESPACE
51
52class QDebug;
53class QStringList;
54class QDataStream;
55
56
57class QServiceInterfaceDescriptorPrivate;
58class Q_SERVICEFW_EXPORT QServiceInterfaceDescriptor
59{
60public:
61 enum Attribute {
62 Capabilities = 0,
63 Location,
64 ServiceDescription,
65 InterfaceDescription,
66 ServiceType
67 };
68
69 QServiceInterfaceDescriptor();
70 QServiceInterfaceDescriptor(const QServiceInterfaceDescriptor& other);
71 ~QServiceInterfaceDescriptor();
72
73 QServiceInterfaceDescriptor& operator=(const QServiceInterfaceDescriptor& other);
74 bool operator==(const QServiceInterfaceDescriptor& other) const;
75 inline bool operator!=(const QServiceInterfaceDescriptor& other) const
76 { return !operator==(other); }
77
78 QString serviceName() const;
79 QString interfaceName() const;
80 int majorVersion() const;
81 int minorVersion() const;
82
83 bool isValid() const;
84
85 QService::Scope scope() const;
86
87 QVariant attribute(QServiceInterfaceDescriptor::Attribute which) const;
88 QString customAttribute(const QString& which) const;
89 QStringList customAttributes() const;
90
91private:
92 QServiceInterfaceDescriptorPrivate* d;
93
94 friend class QServiceInterfaceDescriptorPrivate;
95 friend class QServiceManager;
96 friend class ServiceDatabase;
97 friend class ServiceMetaData;
98 friend class DatabaseManager;
99#ifndef QT_NO_DATASTREAM
100 friend Q_SERVICEFW_EXPORT QDataStream &operator<<(QDataStream &, const QServiceInterfaceDescriptor &);
101 friend Q_SERVICEFW_EXPORT QDataStream &operator>>(QDataStream &, QServiceInterfaceDescriptor &);
102#endif
103};
104
105inline uint qHash(const QServiceInterfaceDescriptor &desc)
106{
107 return qHash(key: desc.serviceName()) + qHash(key: desc.interfaceName()) + desc.majorVersion() * 7 + desc.minorVersion() * 7;
108}
109
110#ifndef QT_NO_DATASTREAM
111Q_SERVICEFW_EXPORT QDataStream &operator<<(QDataStream &, const QServiceInterfaceDescriptor &);
112Q_SERVICEFW_EXPORT QDataStream &operator>>(QDataStream &, QServiceInterfaceDescriptor &);
113#endif
114#ifndef QT_NO_DEBUG_STREAM
115Q_SERVICEFW_EXPORT QDebug operator<<(QDebug, const QServiceInterfaceDescriptor &);
116#endif
117
118
119QT_END_NAMESPACE
120
121#endif
122

source code of qtsystems/src/serviceframework/qserviceinterfacedescriptor.h