/* FixpointQuery -- Automatically generated by TreeBuilder (2024-10-27T16:48Z) */ package de.uni_freiburg.informatik.ultimate.crocotta.ast; import java.util.List; /** * Represents a fixpoint query which is a special form of a query. */ public class FixpointQuery extends Query { private static final long serialVersionUID = 1L; private static final java.util.function.Predicate VALIDATOR = CrocottaQuery.VALIDATORS.get(FixpointQuery.class); /** * The fin inf expr of this fixpoint query. */ FinInfExpression finInfExpr; /** * The expr of this fixpoint query. */ LanguageExpression expr; /** * The constructor taking initial values. * @param finInfExpr the fin inf expr of this fixpoint query. * @param expr the expr of this fixpoint query. */ public FixpointQuery(FinInfExpression finInfExpr, LanguageExpression expr) { super(); this.finInfExpr = finInfExpr; this.expr = expr; assert VALIDATOR == null || VALIDATOR.test(this) : "Invalid FixpointQuery: " + this; } /** * Returns a textual description of this object. */ public String toString() { StringBuffer sb = new StringBuffer(); sb.append("FixpointQuery").append('['); sb.append(finInfExpr); sb.append(',').append(expr); return sb.append(']').toString(); } /** * Gets the fin inf expr of this fixpoint query. * @return the fin inf expr of this fixpoint query. */ public FinInfExpression getFinInfExpr() { return finInfExpr; } /** * Gets the expr of this fixpoint query. * @return the expr of this fixpoint query. */ public LanguageExpression getExpr() { return expr; } public List getOutgoingNodes() { List children = super.getOutgoingNodes(); children.add(finInfExpr); children.add(expr); return children; } public void accept(CrocottaAstVisitor visitor) { if (visitor.visit((Query)this)) { //visit parent types higher up if necessary } else { return; } if (visitor.visit(this)) { if(finInfExpr!=null){ finInfExpr.accept(visitor); } if(expr!=null){ expr.accept(visitor); } } } public Query accept(CrocottaAstTransformer visitor) { Query node = visitor.transform(this); if(node != this){ return node; } FinInfExpression newfinInfExpr = null; if(finInfExpr != null){ newfinInfExpr = (FinInfExpression)finInfExpr.accept(visitor); } LanguageExpression newexpr = null; if(expr != null){ newexpr = (LanguageExpression)expr.accept(visitor); } if(finInfExpr != newfinInfExpr || expr != newexpr){ return new FixpointQuery(newfinInfExpr, newexpr); } return this; } }