001package csheets.core.formula.lang;
002
003import csheets.core.*;
004import csheets.core.formula.*;
005
006/**
007 * A function that implements a loop statement where the first condition was the
008 * stop argument and the next arguments are the execution statements
009 * 
010 * @author Andre
011 * 
012 */
013public class Dowhile implements Function {
014
015        /**
016         * Create a new instance of function do while
017         */
018        public Dowhile() {
019        }
020
021        /** Parameters: condition, execution statements */
022        public static final FunctionParameter[] parameters = new FunctionParameter[] { new FunctionParameter(
023                        Value.Type.UNDEFINED, "Iterations", false,
024                        "The iterators of expression.") };
025
026        @Override
027        public String getIdentifier() {
028                return "DOWHILE";
029        }
030
031        @Override
032        public Value applyTo(Expression[] args) throws IllegalValueTypeException {
033                // arg[last] = conditional
034                // arg[>0...last] = iterations
035                return args[args.length - 2].evaluate();
036        }
037
038        @Override
039        public FunctionParameter[] getParameters() {
040                return parameters;
041        }
042
043        @Override
044        public boolean isVarArg() {
045                return true;
046        }
047
048}