1 33 package net.sf.jga.fn.arithmetic; 34 35 import java.util.Iterator ; 36 import net.sf.jga.fn.BinaryFunctor; 37 import net.sf.jga.fn.UnaryFunctor; 38 39 44 45 50 public final class ArithmeticFunctors { 51 53 static public <T extends Number > UnaryFunctor<Iterator <T>,T> average(Class <T> t) { 54 return new Average<T>(t); 55 } 56 57 63 70 71 73 static public <T extends Number > BinaryFunctor<T,T,T> bitwiseAnd(Class <T> t) { 74 return new BitwiseAnd<T>(t); 75 } 76 77 79 @SuppressWarnings ("unchecked") 80 static public <T extends Number > UnaryFunctor<T,T> bitwiseAnd(T value) { 81 return new BitwiseAnd<T>((Class <T>) value.getClass()).bind2nd(value); 82 } 83 84 86 static public <T extends Number > UnaryFunctor<T,T> bitwiseNot(Class <T> t) { 87 return new BitwiseNot<T>(t); 88 } 89 90 92 static public <T extends Number > BinaryFunctor<T,T,T> bitwiseOr(Class <T> t) { 93 return new BitwiseOr<T>(t); 94 } 95 96 98 @SuppressWarnings ("unchecked") 99 static public <T extends Number > UnaryFunctor<T,T> bitwiseOr(T value) { 100 return new BitwiseOr<T>((Class <T>) value.getClass()).bind2nd(value); 101 } 102 103 105 static public <T extends Number > BinaryFunctor<T,T,T> bitwiseXor(Class <T> t) { 106 return new BitwiseXor<T>(t); 107 } 108 109 111 @SuppressWarnings ("unchecked") 112 static public <T extends Number > UnaryFunctor<T,T> bitwiseXor(T value) { 113 return new BitwiseXor<T>((Class <T>) value.getClass()).bind2nd(value); 114 } 115 116 118 static public <T extends Number > BinaryFunctor<T,T,T> divides(Class <T> t) { 119 return new Divides<T>(t); 120 } 121 122 124 @SuppressWarnings ("unchecked") 125 static public <T extends Number > UnaryFunctor<T,T> divides(T value) { 126 return new Divides<T>((Class <T>) value.getClass()).bind2nd(value); 128 } 129 130 132 static public <T extends Number > BinaryFunctor<T,T,T> minus(Class <T> t) { 133 return new Minus<T>(t); 134 } 135 136 138 @SuppressWarnings ("unchecked") 139 static public <T extends Number > UnaryFunctor<T,T> minus(T value) { 140 return new Minus<T>((Class <T>) value.getClass()).bind2nd(value); 141 } 142 143 145 static public <T extends Number > BinaryFunctor<T,T,T> modulus(Class <T> t) { 146 return new Modulus<T>(t); 147 } 148 149 151 @SuppressWarnings ("unchecked") 152 static public <T extends Number > UnaryFunctor<T,T> modulus(T value) { 153 return new Modulus<T>((Class <T>) value.getClass()).bind2nd(value); 154 } 155 156 158 static public <T extends Number > BinaryFunctor<T,T,T> multiplies(Class <T> t) { 159 return new Multiplies<T>(t); 160 } 161 162 164 @SuppressWarnings ("unchecked") 165 static public <T extends Number > UnaryFunctor<T,T> multiplies(T value) { 166 return new Multiplies<T>((Class <T>) value.getClass()).bind2nd(value); 167 } 168 169 171 static public <T extends Number > UnaryFunctor<T,T> negate(Class <T> t) { 172 return new Negate<T>(t); 173 } 174 175 182 187 194 196 static public <T extends Number > BinaryFunctor<T,T,T> plus(Class <T> t) { 197 return new Plus<T>(t); 198 } 199 200 202 @SuppressWarnings ("unchecked") 203 static public <T extends Number > UnaryFunctor<T,T> plus(T value) { 204 return new Plus<T>((Class <T>) value.getClass()).bind2nd(value); 205 } 206 207 209 static public <T extends Number > BinaryFunctor<T,Integer ,T> shiftLeft(Class <T> t) { 210 return new ShiftLeft<T>(t); 211 } 212 213 214 216 static public <T extends Number > BinaryFunctor<T,Integer ,T> shiftRight(Class <T> t) { 217 return new ShiftRight<T>(t); 218 } 219 220 222 static public <T extends Number > BinaryFunctor<T,Integer ,T> unsignedShiftRight(Class <T> t) { 223 return new UnsignedShiftRight<T>(t); 224 } 225 226 228 static public <T extends Number ,R extends Number > UnaryFunctor<T,R> valueOf(Class <R> r) { 229 return new ValueOf<T,R>(r); 230 } 231 232 238 } 245 246 | Popular Tags |