/* * pascalPlugin.java * * Created on February 25, 2007, 12:18 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package processing; import java.lang.reflect.Field; import java.util.ArrayList; import pascalTypes.Int; import pascalTypes.Char; import pascalTypes.VarChar; import pascalTypes.VarInt; import pascalTypes.VarString; import pascalTypes.pString; import pascalTypes.pascalType; import pascalTypes.types; /** * * @author lardmaster */ public abstract class pascalPlugin { public abstract String getName(); public abstract class argsObject { public boolean argsMatch(ArrayList typesList) { if(typesList.size()!=this.getClass().getFields().length) return false; for(int i=0; i getTypesList(ArrayList argsList) { ArrayList result=new ArrayList(); for(pascalType p:argsList) { result.add(p.getType()); } return result; } public argsObject(ArrayList arrayOfArgs) { Class thisClass=this.getClass(); Field[] fields=thisClass.getFields(); if(!argsMatch(getTypesList(arrayOfArgs))) { throw new IllegalArgumentException("Args array does not match"); } for(int i=0; i arrayOfArgs) { return new argsObject(arrayOfArgs); } public abstract String getPascalName(); public abstract pascalType process(argsObject args); }