summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-08-30 15:03:21 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2016-08-31 04:40:32 +0000
commit90b000155eea734a4892eec01e24cd69b5efdd16 (patch)
tree105e05a1a72702ea684843d67d461eea98212ccd
parent1db438735f7a3033b8a3ce6ef2b36aee1d725197 (diff)
Remove remaining dynamic castsv5.8.0-alpha1
We want to be able to compile without rtti, and we don't really need the dynamic casts anyway. Change-Id: I9b1cc4fd1974452198dac293ece56f10236a4ffa Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
-rw-r--r--src/scxml/qscxmlparser.cpp11
-rw-r--r--src/scxml/qscxmlparser_p.h2
-rw-r--r--src/scxml/qscxmltabledata.cpp4
3 files changed, 13 insertions, 4 deletions
diff --git a/src/scxml/qscxmlparser.cpp b/src/scxml/qscxmlparser.cpp
index 6862614..d09f4c7 100644
--- a/src/scxml/qscxmlparser.cpp
+++ b/src/scxml/qscxmlparser.cpp
@@ -1176,6 +1176,15 @@ DocumentModel::Node::~Node()
{
}
+DocumentModel::AbstractState *DocumentModel::Node::asAbstractState()
+{
+ if (State *state = asState())
+ return state;
+ if (HistoryState *history = asHistoryState())
+ return history;
+ return Q_NULLPTR;
+}
+
void DocumentModel::DataElement::accept(DocumentModel::NodeVisitor *visitor)
{
visitor->visit(this);
@@ -1981,7 +1990,7 @@ bool QScxmlParserPrivate::postReadElementData()
DocumentModel::DataElement *data = Q_NULLPTR;
if (auto state = m_currentState->asState()) {
data = state->dataElements.last();
- } else if (auto scxml = m_currentState->asNode()->asScxml()) {
+ } else if (auto scxml = m_currentState->asScxml()) {
data = scxml->dataElements.last();
} else {
Q_UNREACHABLE();
diff --git a/src/scxml/qscxmlparser_p.h b/src/scxml/qscxmlparser_p.h
index 1d01447..05399fc 100644
--- a/src/scxml/qscxmlparser_p.h
+++ b/src/scxml/qscxmlparser_p.h
@@ -98,6 +98,7 @@ struct Node {
virtual Transition *asTransition() { return Q_NULLPTR; }
virtual HistoryState *asHistoryState() { return Q_NULLPTR; }
virtual Scxml *asScxml() { return Q_NULLPTR; }
+ AbstractState *asAbstractState();
private:
Q_DISABLE_COPY(Node)
@@ -270,7 +271,6 @@ struct StateContainer
virtual AbstractState *asAbstractState() { return Q_NULLPTR; }
virtual State *asState() { return Q_NULLPTR; }
virtual Scxml *asScxml() { return Q_NULLPTR; }
- Node *asNode() { return dynamic_cast<Node *>(this); }
};
struct AbstractState: public StateContainer
diff --git a/src/scxml/qscxmltabledata.cpp b/src/scxml/qscxmltabledata.cpp
index b3f9f1c..952bc16 100644
--- a/src/scxml/qscxmltabledata.cpp
+++ b/src/scxml/qscxmltabledata.cpp
@@ -193,7 +193,7 @@ protected: // visitor
QVector<DocumentModel::AbstractState *> childStates;
foreach (DocumentModel::StateOrTransition *sot, node->children) {
- if (DocumentModel::AbstractState *s = dynamic_cast<DocumentModel::AbstractState *>(sot)) {
+ if (DocumentModel::AbstractState *s = sot->asAbstractState()) {
childStates.append(s);
}
}
@@ -289,7 +289,7 @@ protected: // visitor
QVector<DocumentModel::AbstractState *> childStates;
foreach (DocumentModel::StateOrTransition *sot, state->children) {
- if (auto s = dynamic_cast<DocumentModel::AbstractState *>(sot)) {
+ if (auto s = sot->asAbstractState()) {
childStates.append(s);
}
}