addEditVariable method

Result addEditVariable(
  1. Variable variable,
  2. double priority
)

Attempt to add a single edit Variable to the Solver at the given priority. No edit variables may be added to the Solver at Priority.required.

Check the Result returned to make sure the operation succeeded. Any errors will be reported via the message property on the Result.

Possible Results:

Implementation

Result addEditVariable(Variable variable, double priority) {
  if (_edits.containsKey(variable)) {
    return Result.duplicateEditVariable;
  }

  if (!_isValidNonRequiredPriority(priority)) {
    return Result.badRequiredStrength;
  }

  final constraint = Constraint(
    Expression(<Term>[Term(variable, 1)], 0),
    Relation.equalTo,
  )..priority = priority;

  // ignore: unused_local_variable
  final result = addConstraint(constraint);
  assert(result == Result.success);

  final info = _EditInfo()
    ..tag = _constraints[constraint]!
    ..constraint = constraint
    ..constant = 0.0;

  _edits[variable] = info;

  return Result.success;
}