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
4#ifndef QABSTRACTSTATE_P_H
5#define QABSTRACTSTATE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <private/qobject_p.h>
19#include <QtStateMachine/qabstractstate.h>
20#include <private/qstatemachineglobal_p.h>
21
22QT_REQUIRE_CONFIG(statemachine);
23
24QT_BEGIN_NAMESPACE
25
26class QStateMachine;
27
28class QState;
29class QAbstractStatePrivate : public QObjectPrivate
30{
31 Q_DECLARE_PUBLIC(QAbstractState)
32
33public:
34 enum StateType {
35 AbstractState,
36 StandardState,
37 FinalState,
38 HistoryState
39 };
40
41 QAbstractStatePrivate(StateType type);
42
43 static QAbstractStatePrivate *get(QAbstractState *q)
44 { return q->d_func(); }
45 static const QAbstractStatePrivate *get(const QAbstractState *q)
46 { return q->d_func(); }
47
48 QStateMachine *machine() const;
49
50 void callOnEntry(QEvent *e);
51 void callOnExit(QEvent *e);
52
53 void emitEntered();
54 void emitExited();
55
56 quint16 stateType;
57 bool isMachine;
58
59 void activeChanged()
60 {
61 emit q_func()->activeChanged(active: active.value());
62 }
63 Q_OBJECT_BINDABLE_PROPERTY(QAbstractStatePrivate, bool, active,
64 &QAbstractStatePrivate::activeChanged);
65
66 mutable QState *parentState;
67};
68
69QT_END_NAMESPACE
70
71#endif // QABSTRACTSTATE_P_H
72

source code of qtscxml/src/statemachine/qabstractstate_p.h