/*- * Copyright (c) 2013 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.fitting.functions; import java.util.ArrayList; import java.util.List; import org.eclipse.dawnsci.analysis.api.fitting.functions.IFunction; import org.eclipse.dawnsci.analysis.api.fitting.functions.IOperator; import org.eclipse.january.IMonitor; /** * A n-ary operator that uses n > 0 functions */ abstract public class ANaryOperator extends AOperator implements IOperator { protected List<IFunction> functions; public ANaryOperator() { super(); functions = new ArrayList<IFunction>(); } @Override public boolean isExtendible() { return true; } @Override public int getRequiredFunctions() { return -1; } @Override public void addFunction(IFunction function) { functions.add(function); function.setParentOperator(this); updateParameters(); } @Override public void setFunction(int index, IFunction function) { functions.set(index, function); function.setParentOperator(this); updateParameters(); } @Override public int getNoOfFunctions() { return functions.size(); } @Override public IFunction getFunction(int index) { return functions.get(index); } @Override public IFunction[] getFunctions() { return functions.toArray(new IFunction[functions.size()]); } @Override public void removeFunction(int index) { functions.remove(index).setParentOperator(null); updateParameters(); } @Override public void setMonitor(IMonitor monitor) { super.setMonitor(monitor); for (IFunction function : functions) { function.setMonitor(monitor); } } }