// Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QSCXMLTABLEDATA_P_H #define QSCXMLTABLEDATA_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include #include #include QT_BEGIN_NAMESPACE class QTextStream; class QScxmlInvokableServiceFactory; namespace DocumentModel { struct ScxmlDocument; } namespace QScxmlInternal { class Q_SCXML_EXPORT GeneratedTableData: public QScxmlTableData { public: typedef std::function< int(const QScxmlExecutableContent::InvokeInfo &invokeInfo, const QList &namelist, const QList ¶ms, QSharedPointer content) > CreateFactoryId; struct MetaDataInfo { QStringList stateNames; }; struct DataModelInfo { QHash stringEvaluators; QHash boolEvaluators; QHash variantEvaluators; QHash voidEvaluators; }; public: static void build(DocumentModel::ScxmlDocument *doc, GeneratedTableData *table, MetaDataInfo *metaDataInfo, DataModelInfo *dataModelInfo, CreateFactoryId func); static QString toString(const int *stateMachineTable); public: QString string(QScxmlExecutableContent::StringId id) const override final; QScxmlExecutableContent::InstructionId *instructions() const override final; QScxmlExecutableContent::EvaluatorInfo evaluatorInfo( QScxmlExecutableContent::EvaluatorId evaluatorId) const override final; QScxmlExecutableContent::AssignmentInfo assignmentInfo( QScxmlExecutableContent::EvaluatorId assignmentId) const override final; QScxmlExecutableContent::ForeachInfo foreachInfo( QScxmlExecutableContent::EvaluatorId foreachId) const override final; QScxmlExecutableContent::StringId *dataNames(int *count) const override final; QScxmlExecutableContent::ContainerId initialSetup() const override final; QString name() const override final; const qint32 *stateMachineTable() const override final; QScxmlInvokableServiceFactory *serviceFactory(int id) const override; public: QList theStateMachineTable; QStringList theStrings; QList theInstructions; QList theEvaluators; QList theAssignments; QList theForeaches; QList theDataNameIds; QScxmlExecutableContent::ContainerId theInitialSetup; int theName; }; } // QScxmlInternal namespace QT_END_NAMESPACE #endif // QSCXMLTABLEDATA_P_H