Initialize variable in if statement to avoid doing dynamic_cast twice

- Refactored duplicate code in RuleWithOperator::getVariablesExceptions
- Leveraged auto to simplify declaration of dynamic_cast pointers.
This commit is contained in:
Eduardo Arias
2024-08-08 12:49:48 -07:00
parent 18378c10f8
commit c917d6a2dc
7 changed files with 839 additions and 843 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1086,8 +1086,9 @@ expression:
std::vector<actions::Action *> *a = new std::vector<actions::Action *>();
std::vector<actions::transformations::Transformation *> *t = new std::vector<actions::transformations::Transformation *>();
for (auto &i : *$4.get()) {
if (dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(dynamic_cast<actions::transformations::Transformation *>(i.release()));
if (auto pt = dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(pt);
i.release();
} else {
a->push_back(i.release());
}
@@ -1135,8 +1136,9 @@ expression:
std::vector<actions::Action *> *a = new std::vector<actions::Action *>();
std::vector<actions::transformations::Transformation *> *t = new std::vector<actions::transformations::Transformation *>();
for (auto &i : *$2.get()) {
if (dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(dynamic_cast<actions::transformations::Transformation *>(i.release()));
if (auto pt = dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(pt);
i.release();
} else {
a->push_back(i.release());
}
@@ -1155,8 +1157,9 @@ expression:
std::vector<actions::Action *> *a = new std::vector<actions::Action *>();
std::vector<actions::transformations::Transformation *> *t = new std::vector<actions::transformations::Transformation *>();
for (auto &i : *$2.get()) {
if (dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(dynamic_cast<actions::transformations::Transformation *>(i.release()));
if (auto pt = dynamic_cast<actions::transformations::Transformation *>(i.get())) {
t->push_back(pt);
i.release();
} else {
a->push_back(i.release());
}