Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qqmldebugservice.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
6#include <private/qqmldata_p.h>
7#include <private/qqmlcontext_p.h>
8
9#include <QtCore/QDebug>
10#include <QtCore/QStringList>
11#include <QtCore/QFileInfo>
12
14
15class QQmlDebugServer;
16
18{
19 Q_DECLARE_PUBLIC(QQmlDebugService)
20public:
22
24 const float version;
26};
27
29 name(name), version(version), state(QQmlDebugService::NotConnected)
30{
31}
32
34 : QObject(*(new QQmlDebugServicePrivate(name, version)), parent)
35{
38
39 if (!server)
40 return;
41
42 if (server->service(d->name)) {
43 qWarning() << "QQmlDebugService: Conflicting plugin name" << d->name;
44 } else {
45 server->addService(d->name, this);
46 }
47}
48
50{
53
54 if (!server)
55 return;
56
57 if (server->service(d->name) != this)
58 qWarning() << "QQmlDebugService: Plugin" << d->name << "is not registered.";
59 else
60 server->removeService(d->name);
61}
62
64{
65 Q_D(const QQmlDebugService);
66 return d->name;
67}
68
70{
71 Q_D(const QQmlDebugService);
72 return d->version;
73}
74
76{
77 Q_D(const QQmlDebugService);
78 return d->state;
79}
80
86
87namespace {
88class ObjectReferenceHash : public QObject
89{
91public:
92 ObjectReferenceHash() : nextId(0) {}
93
94 QHash<QObject *, int> objects;
95 QHash<int, QObject *> ids;
96
97 int nextId;
98
99 void remove(QObject *obj);
100};
101}
102Q_GLOBAL_STATIC(ObjectReferenceHash, objectReferenceHash)
103
104void ObjectReferenceHash::remove(QObject *obj)
105{
106 const auto iter = objects.constFind(obj);
107 if (iter != objects.cend()) {
108 ids.remove(iter.value());
109 objects.erase(iter);
110 }
111}
112
118{
119 if (!object)
120 return -1;
121
122 ObjectReferenceHash *hash = objectReferenceHash();
123 auto iter = hash->objects.constFind(object);
124
125 if (iter == hash->objects.cend()) {
126 int id = hash->nextId++;
127 hash->ids.insert(id, object);
128 iter = hash->objects.insert(object, id);
129 connect(object, &QObject::destroyed, hash, &ObjectReferenceHash::remove);
130 }
131 return iter.value();
132}
133
137const QHash<int, QObject *> &QQmlDebugService::objectsForIds()
138{
139 return objectReferenceHash()->ids;
140}
141
143
144#include "qqmldebugservice.moc"
145#include "moc_qqmldebugservice_p.cpp"
const_iterator constFind(const Key &key) const noexcept
Definition qhash.h:1299
iterator erase(const_iterator it)
Definition qhash.h:1233
const_iterator cend() const noexcept
Definition qhash.h:1218
\inmodule QtCore
Definition qobject.h:103
void destroyed(QObject *=nullptr)
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointe...
static QQmlDebugConnector * instance()
QQmlDebugServicePrivate(const QString &name, float version)
QQmlDebugService::State state
void setState(State newState)
static int idForObject(QObject *)
Returns a unique id for object.
~QQmlDebugService() override
static const QHash< int, QObject * > & objectsForIds()
Returns the mapping of objects to unique ids, created through calls to idForObject().
float version() const
const QString & name() const
QQmlDebugService(const QString &, float version, QObject *parent=nullptr)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
QHash< int, QWidget * > hash
[35multi]
else opt state
[0]
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter * iter
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage return DBusPendingCall DBusPendingCall return DBusPendingCall return dbus_int32_t return DBusServer * server
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
#define qWarning
Definition qlogging.h:166
GLenum GLenum GLsizei const GLuint * ids
GLuint name
GLhandleARB obj
[2]
#define Q_OBJECT
settings remove("monkey")
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)