aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/compositevalidator.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2016-11-28 00:36:15 +0100
committerRenaud G <renaud@rolisteam.org>2016-11-28 00:36:15 +0100
commit13e297604b00615d47352538e3c82ea1ac700d4c (patch)
tree567efe03594d261831897f03a7821c4c6eeac59b /compositevalidator.cpp
parentcdd1716bd1aa8d9bbd0137aa98ff24867b6b3a0e (diff)
downloadOneRoll-13e297604b00615d47352538e3c82ea1ac700d4c.tar.gz
OneRoll-13e297604b00615d47352538e3c82ea1ac700d4c.zip
-Add API for copying a branch of execution node.
-Allow to use if node several times.
Diffstat (limited to 'compositevalidator.cpp')
-rw-r--r--compositevalidator.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/compositevalidator.cpp b/compositevalidator.cpp
index 2de9dba..fce4260 100644
--- a/compositevalidator.cpp
+++ b/compositevalidator.cpp
@@ -26,6 +26,15 @@ CompositeValidator::CompositeValidator()
: m_operators(NULL),m_validatorList(NULL)
{
}
+
+CompositeValidator::~CompositeValidator()
+{
+ qDeleteAll(*m_validatorList);
+ if(NULL!=m_operators)
+ {
+ delete m_operators;
+ }
+}
qint64 CompositeValidator::hasValid(Die* b,bool recursive,bool unhighlight) const
{
@@ -87,7 +96,7 @@ quint64 CompositeValidator::getValidRangeSize(quint64 faces) const
{
quint64 sum =0;
int i = -1;
- foreach(Validator* tmp,*m_validatorList)
+ for(Validator* tmp :*m_validatorList)
{
quint64 rel = tmp->getValidRangeSize(faces);
LogicOperation opt;
@@ -117,3 +126,19 @@ void CompositeValidator::setValidatorList(QList<Validator*>* m)
{
m_validatorList = m;
}
+Validator* CompositeValidator::getCopy() const
+{
+ QVector<LogicOperation>* vector = new QVector<LogicOperation>();
+ *vector = *m_operators;
+
+ QList<Validator*>* list= new QList<Validator*>();
+ for(auto val : *m_validatorList)
+ {
+ list->append(val->getCopy());
+ }
+
+ CompositeValidator* val = new CompositeValidator();
+ val->setOperationList(vector);
+ val->setValidatorList(list);
+ return val;
+}