diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2016-08-30 15:03:21 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2016-08-31 04:40:32 +0000 |
commit | 90b000155eea734a4892eec01e24cd69b5efdd16 (patch) | |
tree | 105e05a1a72702ea684843d67d461eea98212ccd | |
parent | 1db438735f7a3033b8a3ce6ef2b36aee1d725197 (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.cpp | 11 | ||||
-rw-r--r-- | src/scxml/qscxmlparser_p.h | 2 | ||||
-rw-r--r-- | src/scxml/qscxmltabledata.cpp | 4 |
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); } } |