package tirateima.controlador; import java.util.ArrayList; import java.util.List; /** * Classe que modela um comando do tipo inicia função */ public class CommandStartFunction extends Command { /** nome da função */ private String name; /** lista de parâmetros de entrada da função */ private List<Object> args; public CommandStartFunction(String name, List<Object> args) { this.name = name; this.args = args; } /** * Executa o início da função. * * Recebe o gerador e executa o comando de startFunction. */ @SuppressWarnings("unchecked") public void execute(Controlador c) throws TiraTeimaLanguageException { /** Verifica se a função foi declarada */ if (!c.declared_functions.containsKey(name)) { gerarErro("Função '" + name + "' não declarada!"); } /** Para cada argumento */ List<Object> values = new ArrayList<Object>(); for (Object arg : args) { /** adiciona este à lista de argumentos*/ if (arg instanceof List<?>) values.add(getValue(c, (List<Object>) arg)); else values.add(arg); } /** Inicia a função no mostrador */ c.mostrador.startFunction(c.declared_functions.get(name) .newFunction(c, values)); } @Override public void revert(Controlador c) throws TiraTeimaLanguageException, ExecutionException { // TODO Auto-generated method stub } }