1 33 package net.sf.jga.fn.logical; 34 35 import java.util.Arrays ; 36 import java.util.Collection ; 37 import net.sf.jga.fn.BinaryFunctor; 38 import net.sf.jga.fn.UnaryFunctor; 39 40 46 47 public final class LogicalFunctors { 48 49 static private LogicalAnd _andInstance = new LogicalAnd(); 50 static private LogicalNot _notInstance = new LogicalNot(); 51 static private LogicalOr _orInstance = new LogicalOr(); 52 53 55 static public <T> UnaryFunctor<T,Boolean > all() { 56 return new All<T>(); 57 } 58 59 61 static public <T> UnaryFunctor<T,Boolean > all(Collection <UnaryFunctor<T,Boolean >> branches) { 62 return new All<T>(branches); 63 } 64 65 67 static public <T> UnaryFunctor<T,Boolean > all(UnaryFunctor<T,Boolean >... branches) { 68 return new All<T>(Arrays.asList(branches)); 69 } 70 71 77 78 80 static public <T> UnaryFunctor<T,Boolean > any() { 81 return new Any<T>(); 82 } 83 84 86 static public <T> UnaryFunctor<T,Boolean > any(Collection <UnaryFunctor<T,Boolean >> branches) { 87 return new Any<T>(branches); 88 } 89 90 92 static public <T> UnaryFunctor<T,Boolean > any(UnaryFunctor<T,Boolean >... branches) { 93 return new Any<T>(Arrays.asList(branches)); 94 } 95 96 98 static public <T1,T2> BinaryFunctor<T1,T2,Boolean > 99 binaryNegate(BinaryFunctor<? super T1,? super T2,Boolean > p) 100 { 101 return new BinaryNegate<T1,T2>(p); 102 } 103 104 106 static public BinaryFunctor<Boolean ,Boolean ,Boolean > logicalAnd() { 107 return _andInstance; 108 } 109 110 112 static public BinaryFunctor<Boolean ,Boolean ,Boolean > logicalOr() { 113 return _orInstance; 114 } 115 116 118 static public UnaryFunctor<Boolean ,Boolean > logicalNot() { 119 return _notInstance; 120 } 121 122 130 136 142 148 150 static public <T> UnaryFunctor<T,Boolean > unaryNegate(UnaryFunctor<? super T, Boolean > p) { 151 return new UnaryNegate<T>(p); 152 } 153 } 154 | Popular Tags |