Changeset 805:bba62a8e784a in livinglogic.java.ul4

Show
Ignore:
Timestamp:
03/01/13 12:54:55 (7 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Change the functions zip, min and max to inherit from Function.

Location:
src/main/java/com/livinglogic/ul4
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • src/main/java/com/livinglogic/ul4/FunctionMax.java

    r784 r805  
    1111import java.util.Iterator; 
    1212 
    13 public class FunctionMax implements UL4Callable 
     13public class FunctionMax extends Function 
    1414{ 
    15     public String getName() 
     15    public String nameUL4() 
    1616    { 
    1717        return "max"; 
    1818    } 
    1919 
    20     public Object callUL4(Object[] args, Map<String, Object> kwargs) 
     20    protected void makeSignature(Signature signature) 
    2121    { 
    22         if (kwargs.size() != 0) 
    23             throw new KeywordArgumentsNotSupportedException(this.getName()); 
    24         return args.length == 0 ? call() : call(args); 
     22        signature.setRemainingArguments("args"); 
     23    } 
     24 
     25    public Object evaluate(Object[] args) 
     26    { 
     27        List<Object> argList = (List<Object>)args[0]; 
     28        return (argList.size() == 0) ? call() : call(argList); 
    2529    } 
    2630 
    2731    public static Object call() 
    2832    { 
    29         throw new MissingArgumentException("max", "iterable", 0); 
     33        throw new MissingArgumentException("max", "args", 0); 
    3034    } 
    3135 
    32     public static Object call(Object[] objs) 
     36    public static Object call(List<Object> objs) 
    3337    { 
    34         Iterator iter = Utils.iterator(objs.length == 1 ? objs[0] : objs); 
     38        Iterator iter = Utils.iterator(objs.size() == 1 ? objs.get(0) : objs); 
    3539 
    3640        Object maxValue = null; 
  • src/main/java/com/livinglogic/ul4/FunctionMin.java

    r784 r805  
    1111import java.util.Iterator; 
    1212 
    13 public class FunctionMin implements UL4Callable 
     13public class FunctionMin extends Function 
    1414{ 
    15     public String getName() 
     15    public String nameUL4() 
    1616    { 
    1717        return "min"; 
    1818    } 
    1919 
    20     public Object callUL4(Object[] args, Map<String, Object> kwargs) 
     20    protected void makeSignature(Signature signature) 
    2121    { 
    22         if (kwargs.size() != 0) 
    23             throw new KeywordArgumentsNotSupportedException(this.getName()); 
    24         return args.length == 0 ? call() : call(args); 
     22        signature.setRemainingArguments("args"); 
     23    } 
     24 
     25    public Object evaluate(Object[] args) 
     26    { 
     27        List<Object> argList = (List<Object>)args[0]; 
     28        return (argList.size() == 0) ? call() : call(argList); 
    2529    } 
    2630 
    2731    public static Object call() 
    2832    { 
    29         throw new MissingArgumentException("min", "iterable", 0); 
     33        throw new MissingArgumentException("min", "args", 0); 
    3034    } 
    3135 
    32     public static Object call(Object[] objs) 
     36    public static Object call(List<Object> objs) 
    3337    { 
    34         Iterator iter = Utils.iterator(objs.length == 1 ? objs[0] : objs); 
     38        Iterator iter = Utils.iterator(objs.size() == 1 ? objs.get(0) : objs); 
    3539 
    3640        Object minValue = null; 
  • src/main/java/com/livinglogic/ul4/FunctionZip.java

    r784 r805  
    1212import java.util.Vector; 
    1313 
    14 public class FunctionZip implements UL4Callable 
     14public class FunctionZip extends Function 
    1515{ 
    16     public String getName() 
     16    public String nameUL4() 
    1717    { 
    1818        return "zip"; 
    1919    } 
    2020 
    21     public Object callUL4(Object[] args, Map<String, Object> kwargs) 
     21    protected void makeSignature(Signature signature) 
    2222    { 
    23         if (kwargs.size() != 0) 
    24             throw new KeywordArgumentsNotSupportedException(this.getName()); 
    25         return call(args); 
     23        signature.setRemainingArguments("iterables"); 
    2624    } 
    2725 
    28     public static Object call(Object[] objs) 
     26    public Object evaluate(Object[] args) 
    2927    { 
    30         return new ZipIterator(objs); 
     28        return call((List<Object>)args[0]); 
     29    } 
     30 
     31    public static Iterator call(List<Object> iterables) 
     32    { 
     33        return new ZipIterator(iterables); 
    3134    } 
    3235 
     
    3538        Iterator[] iterators; 
    3639 
    37         public ZipIterator(Object[] iterators) 
     40        public ZipIterator(List<Object> iterables) 
    3841        { 
    39             this.iterators = new Iterator[iterators.length]; 
     42            iterators = new Iterator[iterables.size()]; 
    4043             
    4144            for (int i = 0; i < iterators.length; ++i) 
    42                 this.iterators[i] = Utils.iterator(iterators[i]); 
     45                this.iterators[i] = Utils.iterator(iterables.get(i)); 
    4346        } 
    4447