diff options
| author | 2018-12-14 23:48:52 +0100 | |
|---|---|---|
| committer | 2018-12-15 02:18:16 +0100 | |
| commit | 6204fbaab592179f0556eb673c61fa3d3313d2a7 (patch) | |
| tree | 5b8b143428adb3eb89903d88a6f6e0b48bf6b7bd | |
| parent | 27709cc074cf34a866e0f57e2546e1e1bdf708b7 (diff) | |
| download | OneRoll-6204fbaab592179f0556eb673c61fa3d3313d2a7.tar.gz OneRoll-6204fbaab592179f0556eb673c61fa3d3313d2a7.zip | |
List operator fix of range.
| -rw-r--r-- | node/parenthesesnode.cpp | 5 | ||||
| -rw-r--r-- | parsingtoolbox.cpp | 28 | ||||
| -rw-r--r-- | parsingtoolbox.h | 1 | ||||
| -rw-r--r-- | range.h | 4 | ||||
| -rw-r--r-- | result/result.cpp | 2 |
5 files changed, 29 insertions, 11 deletions
diff --git a/node/parenthesesnode.cpp b/node/parenthesesnode.cpp index 3a683db..5e2d0e0 100644 --- a/node/parenthesesnode.cpp +++ b/node/parenthesesnode.cpp @@ -32,7 +32,7 @@ void ParenthesesNode::setInternelNode(ExecutionNode* node) } void ParenthesesNode::run(ExecutionNode* /*previous*/) { - m_previousNode = nullptr; + //m_previousNode = previous; if(nullptr!=m_internalNode) { m_internalNode->run(this); @@ -44,7 +44,6 @@ void ParenthesesNode::run(ExecutionNode* /*previous*/) m_result = temp->getResult(); } - if(nullptr!=m_nextNode) { m_nextNode->run(this); @@ -101,7 +100,7 @@ void ParenthesesNode::generateDotTree(QString & s) s.append(toString(false)); s.append(" -> "); s.append(m_nextNode->toString(false)); - s.append("[label=\"next\"];\n"); + s.append(" [label=\"next\"];\n"); // s.append(" [label=\"nextNode\"];\n"); m_nextNode->generateDotTree(s); } diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 7a3dcad..0fc7b50 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -544,12 +544,32 @@ bool ParsingToolBox::readCloseParentheses(QString& str) else return false; } + +int ParsingToolBox::findClosingCharacterIndexOf(QChar open, QChar closing,const QString &str, int offset) +{ + int counter = offset; + int i = 0; + for(auto const& letter : str) + { + if(letter == open) + ++counter; + else if(letter == closing) + --counter; + + if(counter == 0) + return i; + + ++i; + } + return -1; +} + bool ParsingToolBox::readList(QString& str,QStringList& list,QList<Range>& ranges) { if(str.startsWith("[")) { str=str.remove(0,1); - int pos = str.indexOf("]"); + int pos = findClosingCharacterIndexOf('[',']',str,1);//str.indexOf("]"); if(-1!=pos) { QString liststr = str.left(pos); @@ -685,8 +705,6 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) int i=0; int j=0; bool hasPercentage=false; - //QList<Range> rangesTemp; - //range for(QString line:str) { int pos = line.indexOf('['); @@ -731,7 +749,7 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) if((hasPercentage)&&(undefDistance!=0)) { - qreal ratio = (qreal)100.0 / (qreal)undefDistance; + qreal ratio = 100.0 / static_cast<qreal>(undefDistance); qint64 realStart=0; for(int i = 0; i< ranges.size(); ++i) { @@ -765,7 +783,7 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) { qint64 sizeRange = range.getEnd()-range.getStart(); range.setStart(limitUp); - limitUp+=sizeRange+1; + limitUp+=sizeRange; range.setEnd(limitUp); } ++limitUp; diff --git a/parsingtoolbox.h b/parsingtoolbox.h index be0b0eb..5846c57 100644 --- a/parsingtoolbox.h +++ b/parsingtoolbox.h @@ -194,6 +194,7 @@ public: static void setStartNodes(std::vector<ExecutionNode *> *startNodes); static bool readOperand(QString &str, ExecutionNode *&node); + static int findClosingCharacterIndexOf(QChar open, QChar closing, const QString &str, int offset); private: QMap<QString,BooleanCondition::LogicOperator>* m_logicOp; @@ -49,8 +49,8 @@ public: virtual Validator* getCopy() const; private: - qint64 m_start; - qint64 m_end; + qint64 m_start = 0; + qint64 m_end = 0; bool m_hasEnd; bool m_hasStart; bool m_emptyRange; diff --git a/result/result.cpp b/result/result.cpp index 8b4667b..4378350 100644 --- a/result/result.cpp +++ b/result/result.cpp @@ -71,7 +71,7 @@ void Result::generateDotTree(QString& s) s.append(toString(false)); s.append(" -> "); s.append("nullptr"); - s.append(" [label=\"previousResult\"];\n"); + s.append(" [label=\"previousResult\", shape=\"box\"];\n"); } } |