module cassowary.EditOrStayConstraint; import cassowary.Constraint; import cassowary.Variable; import cassowary.Strength; import cassowary.LinearExpression; abstract class ClEditOrStayConstraint : ClConstraint { this(ClVariable var, const ClStrength strength = ClStrength.required, double weight = 1) { super(strength, weight); _variable = var; _expression = new ClLinearExpression(_variable, -1.0, _variable.value()); } ClVariable variable() { return _variable; } override ClLinearExpression expression() { return _expression; } private ClVariable _variable; // cache the expresion private ClLinearExpression _expression; }