we flatten or(or(or(a,b),c),d) into a single vector {a,b,c,d}
| 2695 | |
| 2696 | // we flatten or(or(or(a,b),c),d) into a single vector {a,b,c,d} |
| 2697 | void flattenOrSequence ( const ExprOp2 * op, vector<ExpressionPtr> & ret ) { |
| 2698 | if ( op->left->rtti_isOp2() && static_cast<ExprOp2*>(op->left)->op==op->op ) { |
| 2699 | flattenOrSequence(static_cast<ExprOp2*>(op->left), ret); |
| 2700 | } else { |
| 2701 | ret.push_back(op->left); |
| 2702 | } |
| 2703 | if ( op->right->rtti_isOp2() && static_cast<ExprOp2*>(op->right)->op==op->op ) { |
| 2704 | flattenOrSequence(static_cast<ExprOp2*>(op->right), ret); |
| 2705 | } else { |
| 2706 | ret.push_back(op->right); |
| 2707 | } |
| 2708 | } |
| 2709 | |
| 2710 | ExpressionPtr SimulateVisitor::visit(ExprOp2 * expr) { |
| 2711 | const auto &at = expr->at; |