summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTamas Martinec <tamas.martinec@symbio.com>2021-02-04 12:51:42 +0200
committerTamas Martinec <tamas.martinec@symbio.com>2021-02-19 09:15:31 +0000
commit087c11e2ac368cf900292e2b6937841a79291acd (patch)
treee4a8e7f083e9eb25e2e85aa117f6fffebf2b88e6 /src
parentcc7e40edd84fae79dbec7442bde1349e8e65f28a (diff)
QtScxml: Move ecmascript data model to a plugin
Move qscxmlecmascriptdatamodel to a plugin to remove the build time qml dependency. Task-number: QTBUG-89831 Change-Id: Ibac93cfe39e35c084ed9811a113c88cc660c0436 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> (cherry picked from commit 9251d5c76fb57674e8b7d3491f064814c5e08b20)
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/plugins/CMakeLists.txt1
-rw-r--r--src/plugins/scxmldatamodel/CMakeLists.txt3
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/CMakeLists.txt26
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/ecmascriptdatamodel_plugin.json3
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.cpp48
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.h59
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.cpp (renamed from src/scxml/qscxmlecmascriptdatamodel.cpp)11
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.h (renamed from src/scxml/qscxmlecmascriptdatamodel.h)7
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties.cpp (renamed from src/scxml/qscxmlecmascriptplatformproperties.cpp)0
-rw-r--r--src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties_p.h (renamed from src/scxml/qscxmlecmascriptplatformproperties_p.h)2
-rw-r--r--src/scxml/CMakeLists.txt17
-rw-r--r--src/scxml/qscxmldatamodel.cpp40
-rw-r--r--src/scxml/qscxmldatamodel.h2
-rw-r--r--src/scxml/qscxmldatamodelplugin.cpp46
-rw-r--r--src/scxml/qscxmldatamodelplugin.h59
-rw-r--r--src/scxml/qscxmlglobals_p.h2
-rw-r--r--src/scxml/qscxmlstatemachine_p.h3
-rw-r--r--src/scxml/scxml.pro12
19 files changed, 300 insertions, 42 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f72f7ef..29f063a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -7,3 +7,4 @@ if(TARGET Qt::Qml)
add_subdirectory(scxmlqml)
add_subdirectory(imports)
endif()
+add_subdirectory(plugins)
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
new file mode 100644
index 0000000..b64816f
--- /dev/null
+++ b/src/plugins/CMakeLists.txt
@@ -0,0 +1 @@
+ add_subdirectory(scxmldatamodel)
diff --git a/src/plugins/scxmldatamodel/CMakeLists.txt b/src/plugins/scxmldatamodel/CMakeLists.txt
new file mode 100644
index 0000000..0b4c9f8
--- /dev/null
+++ b/src/plugins/scxmldatamodel/CMakeLists.txt
@@ -0,0 +1,3 @@
+if(QT_FEATURE_scxml_ecmascriptdatamodel)
+ add_subdirectory(ecmascriptdatamodel)
+endif()
diff --git a/src/plugins/scxmldatamodel/ecmascriptdatamodel/CMakeLists.txt b/src/plugins/scxmldatamodel/ecmascriptdatamodel/CMakeLists.txt
new file mode 100644
index 0000000..3b05062
--- /dev/null
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/CMakeLists.txt
@@ -0,0 +1,26 @@
+#####################################################################
+## EcmaScript SCXML DataModel Plugin:
+#####################################################################
+
+qt_internal_add_plugin(QDataModelPluginEcmaScript
+ OUTPUT_NAME qscxmldatamodelecmascript
+ TYPE scxmldatamodel
+ SOURCES
+ qdatamodel_ecmascript_plugin.cpp qdatamodel_ecmascript_plugin.h
+ qscxmlecmascriptdatamodel.h qscxmlecmascriptdatamodel.cpp
+ qscxmlecmascriptplatformproperties.cpp qscxmlecmascriptplatformproperties_p.h
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Scxml
+ Qt::Qml
+ PRIVATE_MODULE_INTERFACE
+ Qt::CorePrivate
+ Qt::QmlPrivate
+ Qt::ScxmlPrivate
+ INCLUDE_DIRECTORIES
+ $<TARGET_PROPERTY:Qt::QmlPrivate,INTERFACE_INCLUDE_DIRECTORIES>
+ $<TARGET_PROPERTY:Qt::Scxml,INTERFACE_INCLUDE_DIRECTORIES>
+ $<TARGET_PROPERTY:Qt::ScxmlPrivate,INTERFACE_INCLUDE_DIRECTORIES>
+)
+
+# OTHER_FILES = "ecmascriptdatamodel_plugin.json"
diff --git a/src/plugins/scxmldatamodel/ecmascriptdatamodel/ecmascriptdatamodel_plugin.json b/src/plugins/scxmldatamodel/ecmascriptdatamodel/ecmascriptdatamodel_plugin.json
new file mode 100644
index 0000000..09b76e2
--- /dev/null
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/ecmascriptdatamodel_plugin.json
@@ -0,0 +1,3 @@
+{
+ "Keys": ["ecmascriptdatamodel"]
+}
diff --git a/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.cpp b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.cpp
new file mode 100644
index 0000000..0aab970
--- /dev/null
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.cpp
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtScxml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "QtScxml/qscxmldatamodel.h"
+#include "qscxmlecmascriptdatamodel.h"
+#include "qdatamodel_ecmascript_plugin.h"
+
+QT_BEGIN_NAMESPACE
+
+QScxmlDataModel *QScxmlDataModelPluginEcmaScript::createScxmlDataModel() const
+{
+ return new QScxmlEcmaScriptDataModel;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.h b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.h
new file mode 100644
index 0000000..a1db365
--- /dev/null
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qdatamodel_ecmascript_plugin.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtScxml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QDATAMODELPLUGIN_ECMASCRIPT_H
+#define QDATAMODELPLUGIN_ECMASCRIPT_H
+
+#include "QtScxml/qscxmldatamodelplugin.h"
+
+#include <QtCore/QObject>
+
+QT_BEGIN_NAMESPACE
+
+class QScxmlDataModelPluginEcmaScript : public QObject, public QScxmlDataModelPlugin
+{
+ Q_OBJECT
+ Q_INTERFACES(QScxmlDataModelPlugin)
+ Q_PLUGIN_METADATA(IID "org.qt-project.qt.scxml.datamodel.plugin"
+ FILE "ecmascriptdatamodel_plugin.json")
+
+public:
+ QScxmlDataModel *createScxmlDataModel() const override;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/scxml/qscxmlecmascriptdatamodel.cpp b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.cpp
index 2f06d9d..b4ca17d 100644
--- a/src/scxml/qscxmlecmascriptdatamodel.cpp
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.cpp
@@ -37,12 +37,12 @@
**
****************************************************************************/
-#include "qscxmlglobals_p.h"
+#include <QtScxml/private/qscxmlglobals_p.h>
#include "qscxmlecmascriptdatamodel.h"
#include "qscxmlecmascriptplatformproperties_p.h"
-#include "qscxmlexecutablecontent_p.h"
-#include "qscxmlstatemachine_p.h"
-#include "qscxmldatamodel_p.h"
+#include <QtScxml/private/qscxmlexecutablecontent_p.h>
+#include <QtScxml/private/qscxmlstatemachine_p.h>
+#include <QtScxml/private/qscxmldatamodel_p.h>
#include <qjsengine.h>
#include <qjsondocument.h>
@@ -53,6 +53,9 @@
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(qscxmlLog, "qt.scxml.statemachine")
+Q_LOGGING_CATEGORY(scxmlLog, "scxml.statemachine")
+
using namespace QScxmlExecutableContent;
typedef std::function<QString (bool *)> ToStringEvaluator;
diff --git a/src/scxml/qscxmlecmascriptdatamodel.h b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.h
index 16f29d4..c4045dd 100644
--- a/src/scxml/qscxmlecmascriptdatamodel.h
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptdatamodel.h
@@ -40,16 +40,15 @@
#ifndef QSCXMLECMASCRIPTDATAMODEL_H
#define QSCXMLECMASCRIPTDATAMODEL_H
+#include <QObject>
#include <QtScxml/qscxmlglobals.h>
#include <QtScxml/qscxmldatamodel.h>
QT_BEGIN_NAMESPACE
-// We cannot use QT_REQUIRE_CONFIG here, because the feature name contains a dash.
-#if QT_CONFIG(scxml_ecmascriptdatamodel)
class QScxmlEcmaScriptDataModelPrivate;
-class Q_SCXML_EXPORT QScxmlEcmaScriptDataModel: public QScxmlDataModel
+class QScxmlEcmaScriptDataModel: public QScxmlDataModel
{
Q_OBJECT
Q_DECLARE_PRIVATE(QScxmlEcmaScriptDataModel)
@@ -73,8 +72,6 @@ public:
bool setScxmlProperty(const QString &name, const QVariant &value, const QString &context) override;
};
-#endif // QT_CONFIG(scxml_ecmascriptdatamodel)
-
QT_END_NAMESPACE
#endif // QSCXMLECMASCRIPTDATAMODEL_H
diff --git a/src/scxml/qscxmlecmascriptplatformproperties.cpp b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties.cpp
index 95e3b4f..95e3b4f 100644
--- a/src/scxml/qscxmlecmascriptplatformproperties.cpp
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties.cpp
diff --git a/src/scxml/qscxmlecmascriptplatformproperties_p.h b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties_p.h
index e7b8a09..b751bda 100644
--- a/src/scxml/qscxmlecmascriptplatformproperties_p.h
+++ b/src/plugins/scxmldatamodel/ecmascriptdatamodel/qscxmlecmascriptplatformproperties_p.h
@@ -58,8 +58,6 @@
QT_FORWARD_DECLARE_CLASS(QJSEngine)
QT_FORWARD_DECLARE_CLASS(QJSValue)
-QT_REQUIRE_CONFIG(scxml_ecmascriptdatamodel);
-
QT_BEGIN_NAMESPACE
class QScxmlStateMachine;
diff --git a/src/scxml/CMakeLists.txt b/src/scxml/CMakeLists.txt
index d96f7f7..4f47973 100644
--- a/src/scxml/CMakeLists.txt
+++ b/src/scxml/CMakeLists.txt
@@ -6,6 +6,7 @@
qt_internal_add_module(Scxml
QMAKE_MODULE_CONFIG c++11 qscxmlc
+ PLUGIN_TYPES scxmldatamodel
SOURCES
qscxmlcompiler.cpp qscxmlcompiler.h qscxmlcompiler_p.h
qscxmlcppdatamodel.cpp qscxmlcppdatamodel.h qscxmlcppdatamodel_p.h
@@ -19,11 +20,16 @@ qt_internal_add_module(Scxml
qscxmlstatemachine.cpp qscxmlstatemachine.h qscxmlstatemachine_p.h
qscxmlstatemachineinfo.cpp qscxmlstatemachineinfo_p.h
qscxmltabledata.cpp qscxmltabledata.h qscxmltabledata_p.h
+ qscxmldatamodelplugin.h qscxmldatamodelplugin.cpp
DEFINES
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
+ LIBRARIES
+ Qt::CorePrivate
PUBLIC_LIBRARIES
Qt::Core
+ PRIVATE_MODULE_INTERFACE
+ Qt::CorePrivate
)
# This allows QML element registration outside of this module with the "QML_ELEMENT" & friends
@@ -39,17 +45,6 @@ qt6_extract_metatypes(Scxml)
## Scopes:
#####################################################################
-qt_internal_extend_target(Scxml CONDITION QT_FEATURE_scxml_ecmascriptdatamodel
- SOURCES
- qscxmlecmascriptdatamodel.cpp qscxmlecmascriptdatamodel.h
- qscxmlecmascriptplatformproperties.cpp qscxmlecmascriptplatformproperties_p.h
- LIBRARIES
- Qt::QmlPrivate
- PUBLIC_LIBRARIES
- Qt::Qml
- PRIVATE_MODULE_INTERFACE
- Qt::QmlPrivate
-)
#### Keys ignored in scope 3:.:.:scxml.pro:NOT force_independent AND ( NOT debug_and_release OR NOT build_all OR CONFIG(release,debug OR release) ):
# QMAKE_EXTRA_COMPILERS = "prf2build"
diff --git a/src/scxml/qscxmldatamodel.cpp b/src/scxml/qscxmldatamodel.cpp
index ab0ae7c..818599f 100644
--- a/src/scxml/qscxmldatamodel.cpp
+++ b/src/scxml/qscxmldatamodel.cpp
@@ -39,13 +39,17 @@
#include "qscxmldatamodel_p.h"
#include "qscxmlnulldatamodel.h"
-#if QT_CONFIG(scxml_ecmascriptdatamodel)
-#include "qscxmlecmascriptdatamodel.h"
-#endif
#include "qscxmlstatemachine_p.h"
+#include <QtCore/private/qfactoryloader_p.h>
+#include "qscxmldatamodelplugin.h"
+
QT_BEGIN_NAMESPACE
+Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
+ ("org.qt-project.qt.scxml.datamodel.plugin",
+ QStringLiteral("/scxmldatamodel")))
+
/*!
\class QScxmlDataModel::ForeachLoopBody
\brief The ForeachLoopBody class represents a function to be executed on
@@ -144,6 +148,31 @@ QScxmlStateMachine *QScxmlDataModel::stateMachine() const
return d->m_stateMachine;
}
+/*!
+ * Creates a data model from a plugin specified by key.
+ */
+QScxmlDataModel *QScxmlDataModel::createScxmlDataModel(const QString& pluginKey)
+{
+ QScxmlDataModel *model = nullptr;
+
+ int pluginIndex = loader()->indexOf(pluginKey);
+
+ if (QObject *object = loader()->instance(pluginIndex)) {
+ if (auto *plugin = qobject_cast<QScxmlDataModelPlugin *>(object)) {
+ model = plugin->createScxmlDataModel();
+ if (!model)
+ qWarning() << pluginKey << " data model was not instantiated, createScxmlDataModel() returned null.";
+
+ } else {
+ qWarning() << "plugin object for" << pluginKey << "is not a QScxmlDatModelPlugin.";
+ }
+ delete object;
+ } else {
+ qWarning() << pluginKey << " plugin not found." ;
+ }
+ return model;
+}
+
QScxmlDataModel *QScxmlDataModelPrivate::instantiateDataModel(DocumentModel::Scxml::DataModelType type)
{
QScxmlDataModel *dataModel = nullptr;
@@ -152,16 +181,13 @@ QScxmlDataModel *QScxmlDataModelPrivate::instantiateDataModel(DocumentModel::Scx
dataModel = new QScxmlNullDataModel;
break;
case DocumentModel::Scxml::JSDataModel:
-#if QT_CONFIG(scxml_ecmascriptdatamodel)
- dataModel = new QScxmlEcmaScriptDataModel;
-#endif
+ dataModel = QScxmlDataModel::createScxmlDataModel(QStringLiteral("ecmascriptdatamodel"));
break;
case DocumentModel::Scxml::CppDataModel:
break;
default:
Q_UNREACHABLE();
}
-
return dataModel;
}
diff --git a/src/scxml/qscxmldatamodel.h b/src/scxml/qscxmldatamodel.h
index 49e24c3..d9c07c9 100644
--- a/src/scxml/qscxmldatamodel.h
+++ b/src/scxml/qscxmldatamodel.h
@@ -72,6 +72,8 @@ public:
public:
explicit QScxmlDataModel(QObject *parent = nullptr);
+ static QScxmlDataModel *createScxmlDataModel(const QString& pluginKey);
+
void setStateMachine(QScxmlStateMachine *stateMachine);
QScxmlStateMachine *stateMachine() const;
diff --git a/src/scxml/qscxmldatamodelplugin.cpp b/src/scxml/qscxmldatamodelplugin.cpp
new file mode 100644
index 0000000..1ee1461
--- /dev/null
+++ b/src/scxml/qscxmldatamodelplugin.cpp
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtScxml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qscxmldatamodelplugin.h"
+
+QT_BEGIN_NAMESPACE
+
+QScxmlDataModel *QScxmlDataModelPlugin::createScxmlDataModel() const
+{
+ return nullptr;
+}
+
+QT_END_NAMESPACE
diff --git a/src/scxml/qscxmldatamodelplugin.h b/src/scxml/qscxmldatamodelplugin.h
new file mode 100644
index 0000000..2450855
--- /dev/null
+++ b/src/scxml/qscxmldatamodelplugin.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtScxml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QSCXMLDATAMODELPLUGIN_H
+#define QSCXMLDATAMODELPLUGIN_H
+
+#include "QtScxml/qscxmldatamodel.h"
+
+#include <QtCore/QtPlugin>
+
+QT_BEGIN_NAMESPACE
+
+class Q_SCXML_EXPORT QScxmlDataModelPlugin
+{
+public:
+ virtual ~QScxmlDataModelPlugin() {}
+
+ virtual QScxmlDataModel *createScxmlDataModel() const;
+};
+
+Q_DECLARE_INTERFACE(QScxmlDataModelPlugin,
+ "org.qt-project.qt.scxml.datamodel.plugin")
+
+QT_END_NAMESPACE
+
+#endif // QSCXMLDATAMODELPLUGIN_H
diff --git a/src/scxml/qscxmlglobals_p.h b/src/scxml/qscxmlglobals_p.h
index fac74dc..a01b57d 100644
--- a/src/scxml/qscxmlglobals_p.h
+++ b/src/scxml/qscxmlglobals_p.h
@@ -57,6 +57,8 @@
QT_BEGIN_NAMESPACE
+#define Q_SCXML_PRIVATE_EXPORT Q_SCXML_EXPORT
+
Q_DECLARE_LOGGING_CATEGORY(qscxmlLog)
Q_DECLARE_LOGGING_CATEGORY(scxmlLog)
diff --git a/src/scxml/qscxmlstatemachine_p.h b/src/scxml/qscxmlstatemachine_p.h
index 834ed07..5d9c758 100644
--- a/src/scxml/qscxmlstatemachine_p.h
+++ b/src/scxml/qscxmlstatemachine_p.h
@@ -57,6 +57,7 @@
#include <QtCore/private/qobject_p.h>
#include <QtCore/private/qmetaobject_p.h>
#include <QtCore/qmetaobject.h>
+#include "qscxmlglobals_p.h"
QT_BEGIN_NAMESPACE
@@ -120,7 +121,7 @@ Q_SIGNALS:
} // QScxmlInternal namespace
class QScxmlInvokableService;
-class QScxmlStateMachinePrivate: public QObjectPrivate
+class Q_SCXML_PRIVATE_EXPORT QScxmlStateMachinePrivate: public QObjectPrivate
{
Q_DECLARE_PUBLIC(QScxmlStateMachine)
diff --git a/src/scxml/scxml.pro b/src/scxml/scxml.pro
index fe55769..50c3203 100644
--- a/src/scxml/scxml.pro
+++ b/src/scxml/scxml.pro
@@ -43,18 +43,6 @@ SOURCES += \
qscxmltabledata.cpp \
qscxmlstatemachineinfo.cpp
-qtConfig(scxml-ecmascriptdatamodel) {
- QT += qml-private
-
- HEADERS += \
- qscxmlecmascriptdatamodel.h \
- qscxmlecmascriptplatformproperties_p.h
-
- SOURCES += \
- qscxmlecmascriptdatamodel.cpp \
- qscxmlecmascriptplatformproperties.cpp
-}
-
load(qt_module)
FEATURES += ../../mkspecs/features/qscxmlc.prf