1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtSensors module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
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 https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28
29#include <QList>
30
31#include "qsensorbackend.h"
32
33typedef QSensorBackend* (*CreateFunc) (QSensor *sensor);
34class Record
35{
36public:
37 QByteArray type;
38 CreateFunc func;
39};
40static QList<Record> records;
41
42static bool registerTestBackend(const char *className, CreateFunc func)
43{
44 Record record;
45 record.type = className;
46 record.func = func;
47 records << record;
48 return true;
49}
50
51#define REGISTER_TOO
52#include "test_backends.h"
53#include <QDebug>
54
55class BackendFactory : public QSensorBackendFactory
56{
57 QSensorBackend *createBackend(QSensor *sensor) override
58 {
59 foreach (const Record &record, records) {
60 if (sensor->identifier() == record.type) {
61 return record.func(sensor);
62 }
63 }
64 return 0;
65 };
66};
67static BackendFactory factory;
68
69void register_test_backends()
70{
71 foreach (const Record &record, records) {
72 QSensorManager::registerBackend(type: record.type, identifier: record.type, factory: &factory);
73 }
74}
75
76void unregister_test_backends()
77{
78 foreach (const Record &record, records) {
79 QSensorManager::unregisterBackend(type: record.type, identifier: record.type);
80 }
81}
82
83

source code of qtsensors/tests/auto/qsensor/test_backends.cpp