Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | QPluginLoader::QPluginLoader(QObject *parent) | - |
7 | : QObject(parent), d(0), did_load(false) | - |
8 | { | - |
9 | } executed: } Execution Count:7 | 7 |
10 | QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent) | - |
11 | : QObject(parent), d(0), did_load(false) | - |
12 | { | - |
13 | setFileName(fileName); | - |
14 | } executed: } Execution Count:16 | 16 |
15 | QPluginLoader::~QPluginLoader() | - |
16 | { | - |
17 | if (d) evaluated: d yes Evaluation Count:22 | yes Evaluation Count:1 |
| 1-22 |
18 | d->release(); executed: d->release(); Execution Count:22 | 22 |
19 | } executed: } Execution Count:23 | 23 |
20 | QObject *QPluginLoader::instance() | - |
21 | { | - |
22 | if (!isLoaded() && !load()) evaluated: !isLoaded() yes Evaluation Count:5 | yes Evaluation Count:15 |
evaluated: !load() yes Evaluation Count:4 | yes Evaluation Count:1 |
| 1-15 |
23 | return 0; executed: return 0; Execution Count:4 | 4 |
24 | if (!d->inst && d->instance) evaluated: !d->inst yes Evaluation Count:8 | yes Evaluation Count:8 |
partially evaluated: d->instance yes Evaluation Count:8 | no Evaluation Count:0 |
| 0-8 |
25 | d->inst = d->instance(); executed: d->inst = d->instance(); Execution Count:8 | 8 |
26 | return d->inst.data(); executed: return d->inst.data(); Execution Count:16 | 16 |
27 | } | - |
28 | QJsonObject QPluginLoader::metaData() const | - |
29 | { | - |
30 | if (!d) | 0 |
31 | return QJsonObject(); never executed: return QJsonObject(); | 0 |
32 | return d->metaData; never executed: return d->metaData; | 0 |
33 | } | - |
34 | bool QPluginLoader::load() | - |
35 | { | - |
36 | if (!d || d->fileName.isEmpty()) evaluated: !d yes Evaluation Count:2 | yes Evaluation Count:24 |
evaluated: d->fileName.isEmpty() yes Evaluation Count:2 | yes Evaluation Count:22 |
| 2-24 |
37 | return false; executed: return false; Execution Count:4 | 4 |
38 | if (did_load) evaluated: did_load yes Evaluation Count:1 | yes Evaluation Count:21 |
| 1-21 |
39 | return d->pHnd && d->instance; executed: return d->pHnd && d->instance; Execution Count:1 | 1 |
40 | if (!d->isPlugin()) evaluated: !d->isPlugin() yes Evaluation Count:11 | yes Evaluation Count:10 |
| 10-11 |
41 | return false; executed: return false; Execution Count:11 | 11 |
42 | did_load = true; | - |
43 | return d->loadPlugin(); executed: return d->loadPlugin(); Execution Count:10 | 10 |
44 | } | - |
45 | bool QPluginLoader::unload() | - |
46 | { | - |
47 | if (did_load) { evaluated: did_load yes Evaluation Count:7 | yes Evaluation Count:3 |
| 3-7 |
48 | did_load = false; | - |
49 | return d->unload(); executed: return d->unload(); Execution Count:7 | 7 |
50 | } | - |
51 | if (d) evaluated: d yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-2 |
52 | d->errorString = tr("The plugin was not loaded."); executed: d->errorString = tr("The plugin was not loaded."); Execution Count:2 | 2 |
53 | return false; executed: return false; Execution Count:3 | 3 |
54 | } | - |
55 | | - |
56 | | - |
57 | | - |
58 | | - |
59 | | - |
60 | | - |
61 | bool QPluginLoader::isLoaded() const | - |
62 | { | - |
63 | return d && d->pHnd && d->instance; executed: return d && d->pHnd && d->instance; Execution Count:21 | 21 |
64 | } | - |
65 | | - |
66 | static QString locatePlugin(const QString& fileName) | - |
67 | { | - |
68 | QStringList prefixes = QLibraryPrivate::prefixes_sys(); | - |
69 | prefixes.prepend(QString()); | - |
70 | QStringList suffixes = QLibraryPrivate::suffixes_sys(QString()); | - |
71 | suffixes.prepend(QString()); | - |
72 | | - |
73 | | - |
74 | const int slash = fileName.lastIndexOf('/'); | - |
75 | const QString baseName = fileName.mid(slash + 1); | - |
76 | const QString basePath = fileName.left(slash + 1); | - |
77 | | - |
78 | const bool debug = qt_debug_component(); | - |
79 | | - |
80 | QStringList paths = QCoreApplication::libraryPaths(); | - |
81 | paths.prepend(QString::fromUtf8("" "./" "", sizeof("./") - 1)); | - |
82 | for (QForeachContainer<__typeof__(paths)> _container_(paths); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &path = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
83 | for (QForeachContainer<__typeof__(prefixes)> _container_(prefixes); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &prefix = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
84 | for (QForeachContainer<__typeof__(suffixes)> _container_(suffixes); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QString &suffix = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
85 | const QString fn = path + QLatin1Char('/') + basePath + prefix + baseName + suffix; | - |
86 | if (debug) partially evaluated: debug no Evaluation Count:0 | yes Evaluation Count:20 |
| 0-20 |
87 | QMessageLogger("plugin/qpluginloader.cpp", 275, __PRETTY_FUNCTION__).debug() << "Trying..." << fn; never executed: QMessageLogger("plugin/qpluginloader.cpp", 275, __PRETTY_FUNCTION__).debug() << "Trying..." << fn; | 0 |
88 | if (QFileInfo(fn).isFile()) evaluated: QFileInfo(fn).isFile() yes Evaluation Count:1 | yes Evaluation Count:19 |
| 1-19 |
89 | return fn; executed: return fn; Execution Count:1 | 1 |
90 | } executed: } Execution Count:19 | 19 |
91 | } executed: } Execution Count:9 | 9 |
92 | } executed: } Execution Count:4 | 4 |
93 | if (debug) partially evaluated: debug no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
94 | QMessageLogger("plugin/qpluginloader.cpp", 282, __PRETTY_FUNCTION__).debug() << fileName << "not found"; never executed: QMessageLogger("plugin/qpluginloader.cpp", 282, __PRETTY_FUNCTION__).debug() << fileName << "not found"; | 0 |
95 | return QString(); executed: return QString(); Execution Count:1 | 1 |
96 | } | - |
97 | void QPluginLoader::setFileName(const QString &fileName) | - |
98 | { | - |
99 | | - |
100 | QLibrary::LoadHints lh; | - |
101 | if (d) { evaluated: d yes Evaluation Count:1 | yes Evaluation Count:21 |
| 1-21 |
102 | lh = d->loadHints; | - |
103 | d->release(); | - |
104 | d = 0; | - |
105 | did_load = false; | - |
106 | } executed: } Execution Count:1 | 1 |
107 | | - |
108 | QFileInfo fi(fileName); | - |
109 | QString fn; | - |
110 | if (fi.isAbsolute()) evaluated: fi.isAbsolute() yes Evaluation Count:20 | yes Evaluation Count:2 |
| 2-20 |
111 | fn = fi.canonicalFilePath(); executed: fn = fi.canonicalFilePath(); Execution Count:20 | 20 |
112 | else | - |
113 | fn = locatePlugin(fileName); executed: fn = locatePlugin(fileName); Execution Count:2 | 2 |
114 | | - |
115 | d = QLibraryPrivate::findOrCreate(fn); | - |
116 | d->loadHints = lh; | - |
117 | if (fn.isEmpty()) evaluated: fn.isEmpty() yes Evaluation Count:1 | yes Evaluation Count:21 |
| 1-21 |
118 | d->errorString = QLibrary::tr("The shared library was not found."); executed: d->errorString = QLibrary::tr("The shared library was not found."); Execution Count:1 | 1 |
119 | else | - |
120 | d->updatePluginState(); executed: d->updatePluginState(); Execution Count:21 | 21 |
121 | } | - |
122 | | - |
123 | QString QPluginLoader::fileName() const | - |
124 | { | - |
125 | if (d) | 0 |
126 | return d->fileName; never executed: return d->fileName; | 0 |
127 | return QString(); never executed: return QString(); | 0 |
128 | } | - |
129 | | - |
130 | | - |
131 | | - |
132 | | - |
133 | | - |
134 | | - |
135 | QString QPluginLoader::errorString() const | - |
136 | { | - |
137 | return (!d || d->errorString.isEmpty()) ? tr("Unknown error") : d->errorString; executed: return (!d || d->errorString.isEmpty()) ? tr("Unknown error") : d->errorString; Execution Count:26 | 26 |
138 | } | - |
139 | | - |
140 | typedef QVector<QStaticPlugin> StaticPluginList; | - |
141 | static StaticPluginList *staticPluginList() { static QGlobalStatic<StaticPluginList > thisGlobalStatic = { { (0) }, false }; if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { StaticPluginList *x = new StaticPluginList; if (!thisGlobalStatic.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<StaticPluginList > cleanup(thisGlobalStatic); } return thisGlobalStatic.pointer.load(); } never executed: delete x; executed: return thisGlobalStatic.pointer.load(); Execution Count:8021 partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x) no Evaluation Count:0 | yes Evaluation Count:21 |
evaluated: !thisGlobalStatic.pointer.load() yes Evaluation Count:21 | yes Evaluation Count:8000 |
partially evaluated: !thisGlobalStatic.destroyed yes Evaluation Count:21 | no Evaluation Count:0 |
| 0-8021 |
142 | void QPluginLoader::setLoadHints(QLibrary::LoadHints loadHints) | - |
143 | { | - |
144 | if (!d) { partially evaluated: !d no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
145 | d = QLibraryPrivate::findOrCreate(QString()); | - |
146 | d->errorString.clear(); | - |
147 | } | 0 |
148 | d->loadHints = loadHints; | - |
149 | } executed: } Execution Count:2 | 2 |
150 | | - |
151 | QLibrary::LoadHints QPluginLoader::loadHints() const | - |
152 | { | - |
153 | if (!d) { evaluated: !d yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
154 | QPluginLoader *that = const_cast<QPluginLoader *>(this); | - |
155 | that->d = QLibraryPrivate::findOrCreate(QString()); | - |
156 | that->d->errorString.clear(); | - |
157 | } executed: } Execution Count:1 | 1 |
158 | return d->loadHints; executed: return d->loadHints; Execution Count:2 | 2 |
159 | } | - |
160 | | - |
161 | | - |
162 | | - |
163 | | - |
164 | | - |
165 | | - |
166 | | - |
167 | void __attribute__((visibility("default"))) qRegisterStaticPluginFunction(QStaticPlugin plugin) | - |
168 | { | - |
169 | staticPluginList()->append(plugin); | - |
170 | } executed: } Execution Count:1 | 1 |
171 | | - |
172 | | - |
173 | | - |
174 | | - |
175 | | - |
176 | QObjectList QPluginLoader::staticInstances() | - |
177 | { | - |
178 | QObjectList instances; | - |
179 | const StaticPluginList *plugins = staticPluginList(); | - |
180 | if (plugins) { | 0 |
181 | for (int i = 0; i < plugins->size(); ++i) never evaluated: i < plugins->size() | 0 |
182 | instances += plugins->at(i).instance(); never executed: instances += plugins->at(i).instance(); | 0 |
183 | } | 0 |
184 | return instances; never executed: return instances; | 0 |
185 | } | - |
186 | | - |
187 | | - |
188 | QVector<QStaticPlugin> QLibraryPrivate::staticPlugins() | - |
189 | { | - |
190 | StaticPluginList *plugins = staticPluginList(); | - |
191 | if (plugins) partially evaluated: plugins yes Evaluation Count:8020 | no Evaluation Count:0 |
| 0-8020 |
192 | return *plugins; executed: return *plugins; Execution Count:8020 | 8020 |
193 | return QVector<QStaticPlugin>(); never executed: return QVector<QStaticPlugin>(); | 0 |
194 | } | - |
195 | | - |
196 | | - |
197 | | - |
| | |