Skip to content

Commit

Permalink
add getAllDiceResult function and hasSeparator
Browse files Browse the repository at this point in the history
  • Loading branch information
Renaud G committed Sep 1, 2015
1 parent 28867d0 commit 7ce5a4a
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 6 deletions.
45 changes: 39 additions & 6 deletions diceparser.cpp
Expand Up @@ -44,6 +44,7 @@
DiceParser::DiceParser()
: m_start(NULL),m_current(NULL)
{
m_currentTreeHasSeparator =false;
m_parsingToolbox = new ParsingToolBox();

m_mapDiceOp = new QMap<QString,DiceOperator>();
Expand Down Expand Up @@ -145,6 +146,7 @@ void DiceParser::insertAlias(DiceAlias* dice, int i)

bool DiceParser::parseLine(QString str)
{
m_currentTreeHasSeparator = false;
m_errorMap.clear();
if(NULL!=m_start)
{
Expand Down Expand Up @@ -412,7 +414,36 @@ QStringList DiceParser::getAllStringResult(bool& hasAlias)

return stringListResult;
}
QStringList DiceParser::getAllDiceResult(bool& hasAlias)
{
ExecutionNode* next = getLeafNode();
Result* result=next->getResult();
QList<Die*> dieListResult;
QStringList stringListResult;

while(NULL!=result)
{
if(result->hasResultOfType(Result::DICE_LIST))
{
DiceResult* stringResult = dynamic_cast<DiceResult*>(result);
if(NULL!=stringResult)
{
dieListResult << stringResult->getResultList();
hasAlias = true;
}
}
result = result->getPrevious();
}
foreach(Die* die, dieListResult)
{
foreach (qint64 value, die->getListValue())
{
stringListResult << QString::number(value);
}
}

return stringListResult;
}
void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues)
{
ExecutionNode* next = getLeafNode();
Expand Down Expand Up @@ -701,21 +732,19 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous)
}
else if(readInstructionOperator(str[0]))
{
str=str.remove(0,1);
delete node;
str=str.remove(0,1);
delete node;
ExecutionNode* nodeExec = NULL;
if(readExpression(str,nodeExec))
{

// nodeExec = getLatestNode(nodeExec);

if(NULL==nodeExec)
{
return false;
}
previous->setNextNode(nodeExec);

m_currentTreeHasSeparator = true;
return true;

}
}
else
Expand All @@ -728,6 +757,10 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous)
}
return false;
}
bool DiceParser::hasSeparator()const
{
return m_currentTreeHasSeparator;
}
DiceRollerNode* DiceParser::addRollDiceNode(qint64 faces,ExecutionNode* previous)
{
DiceRollerNode* mydiceRoller= new DiceRollerNode(faces);
Expand Down
9 changes: 9 additions & 0 deletions diceparser.h
Expand Up @@ -196,6 +196,14 @@ class DiceParser
* @return
*/
QStringList getAllStringResult(bool& hasAlias);
/**
* @brief getAllDiceResult
* @param hasAlias
* @return
*/
QStringList getAllDiceResult(bool& hasAlias);

bool hasSeparator()const;
private:

/**
Expand Down Expand Up @@ -301,6 +309,7 @@ class DiceParser
QString m_command;
ParsingToolBox* m_parsingToolbox;
QString m_helpPath;
bool m_currentTreeHasSeparator;
};

#endif // DICEPARSER_H

0 comments on commit 7ce5a4a

Please sign in to comment.