package qls.ast.rule; import ql.ast.AstNode; import ql.ast.type.Type; /** * Created by bore on 02/03/15. */ public abstract class Rule extends AstNode { public Rule(int lineNumber) { super(lineNumber); } public abstract boolean isCompatibleWithType(Type t); public boolean isOverwrittenBy(Rule r) { return false; } public boolean isRuleOverwrittenBy(Rules highPr) { for (Rule h : highPr) { if (this.isOverwrittenBy(h)) { return true; } } return false; } protected boolean isOverwrittenByWidth(Width r) { return false; } protected boolean isOverwrittenByFont(Font r) { return false; } protected boolean isOverwrittenByFontSize(FontSize r) { return false; } protected boolean isOverwrittenByForeColor(ForeColor r) { return false; } protected boolean isOverwrittenByBackColor(BackColor r) { return false; } protected boolean isOverwrittenByWidget(Widget r) { return false; } public abstract <T> T accept(RuleVisitor<T> visitor); }